kors4r 0 Zgłoś post Napisano Maj 12, 2011 Witam, pewnie da się, ale nie wiem jak. Mam w domu zmienne IP. Mam dwa serwery dedykowane. Na serwerach jest LAMP z webminem. Mam tam też zainstalowany moduł CSF do webmina (zarządzanie firewallem). Ponieważ nie znam się specjalnie na bezpieczeństwie, postanowiłem w CSF wyłączyć wszystkie porty poza portem ssh i 80. Można jednak dodać ręcznie do pliku /etc/csf/csf.allow IP, z którego mogą przychodzić połączenia na dowolny port i nie będą blokowane. Webmin działa na porcie 10000, więc zanim zacznę pracę przy serwerach, muszę (bo mam zmienne IP): - sprawdzić własne zewnętrzne IP na http://adres-ip.pl i skopiować do schowka - zalogować się do ssh, - wyedytować plik /etc/csf/csf.allow, usunąć poprzednio wpisany IP i wprowadzić aktualny - zrestartować csf: /etc/init.d/csf restart To samo na obu serwerach. Coraz bardziej mnie to wkurza i zastanawiam się, czy jest możliwość (pewnie jest), żeby sobie napisać programik uruchamiany na moim komputerze domowym (używam linuksa), który wystarczyłoby uruchomić, a on automatycznie by te wszystkie czynności wykonał, na obu serwerach. Nie znam się specjalnie na programowaniu w linuksie, tylko liznąłem temat. Czy taki program byłby skomplikowany? Czy ktoś mógłby mi to napisać? Za ile? Programuję trochę w PHP, więc temat programowania nie jest mi całkowicie obcy, ale przy mojej wiedzy zadanie mnie przerasta. Chyba, że bylibyście tak uprzejmi i podali jakieś wskazówki (polecenia, manuale po polsku najlepiej). Z góry dziękuję za wszelką pomoc. Udostępnij ten post Link to postu Udostępnij na innych stronach
crazyluki 114 Zgłoś post Napisano Maj 12, 2011 Witaj, kup gdzieś VPS, postaw tam PROXY (np squid) (może wg tego tematu) + dodaj autoryzację. Wtedy zapisujesz by serwer na który się logujesz można było wejść na port 10000 z Twojej bramki proxy i voila. Udostępnij ten post Link to postu Udostępnij na innych stronach
kors4r 0 Zgłoś post Napisano Maj 12, 2011 hmmm..... no jest jakieś wyjście, tyle, że kosztowne; taniej byłoby zlecić komuś napisanie programu, niż płacić za vpsa muszę znaleźć sposób na automatyzację tego, jak się nie da inaczej, to wykorzystam ff+imacros nie ma opcji, żeby się nie dało programowo tego rozwiązać Udostępnij ten post Link to postu Udostępnij na innych stronach
igor_s 30 Zgłoś post Napisano Maj 12, 2011 (edytowany) Tak na szybko możesz nadpisywać plik na zdalnej maszynie za pomocą prostego skryptu: #!/bin/bash/ ip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'` sed -i 's/IP=.*\..*\..*\..*/IP='$ip'/' csf.allow scp csf.allow user@zdalny_host: ssh user@zdalny_host '/etc/init.d/csf restart' na komputerze domowym w katalogu obok skryptu musisz mieć cfs.allow, trzeba tez zmienić w poleceniu sed IP na zmienną jaka jest w csf.allow (nie znam struktury tego pliku) i do pełnej automatyzacji dobrze jak skonfigurujesz klucze ssh. Edytowano Maj 12, 2011 przez igor_s (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kors4r 0 Zgłoś post Napisano Maj 12, 2011 (edytowany) Tak na szybko możesz nadpisywać plik na zdalnej maszynie za pomocą prostego skryptu: #!/bin/bash/ ip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'` sed -i 's/IP=.*\..*\..*\..*/IP='$ip'/' csf.allow scp csf.allow user@zdalny_host: ssh user@zdalny_host '/etc/init.d/csf restart' na komputerze domowym w katalogu obok skryptu musisz mieć cfs.allow, trzeba tez zmienić w poleceniu sed IP na zmienną jaka jest w csf.allow (nie znam struktury tego pliku) i do pełnej automatyzacji dobrze jak skonfigurujesz klucze ssh. dziękuję bardzo, ale... łączę się z netem przez router, więc ifconfig w linii: inet addr: zwraca IP w sieci lokalnej, nie zewnętrzne IP mogę na zdalnym serwerze utworzyć plik php, który będzie generował wyłącznie ip komputera, z którego przyszło żądanie, można by w ten sposób uzyskać zewnętrzny adres ale jak to wkomponować w ten skrypt? użyć wget? jak? Edytowano Maj 12, 2011 przez kors4r (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
igor_s 30 Zgłoś post Napisano Maj 12, 2011 (edytowany) #!/bin/bash/ wget http://checkip.dyndns.org ip=`html2text index.html| awk -F" " '{print $4}'` sed -i 's/IP=.*\..*\..*\..*/IP='$ip'/' csf.allow scp csf.allow user@zdalny_host: ssh user@zdalny_host '/etc/init.d/csf restart' oczywiście musisz doinstalować html2text Edytowano Maj 12, 2011 przez igor_s (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kors4r 0 Zgłoś post Napisano Maj 12, 2011 (edytowany) #!/bin/bash/ wget http://checkip.dyndns.org ip=`html2text index.html| awk -F" " '{print $4}'` sed -i 's/IP=.*\..*\..*\..*/IP='$ip'/' csf.allow scp csf.allow user@zdalny_host: ssh user@zdalny_host '/etc/init.d/csf restart' oczywiście musisz doinstalować html2text bardzo Ci dziękuję za odpowiedź, jak pisałeś ją, ja próbowałem wyedytować mój post rozwiązałem sprawę następująco: utworzyłem na dedyku plik php, który generuje wyłącznie mój zewnętrzny adres IP ten plik php wygląda tak: <?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ $ip = $_SERVER['REMOTE_ADDR']; echo $ip; ?> kod skryptu wygląda teraz tak: #!/bin/bash/ echo "Pobieranie pliku zawierającego w treści wyłącznie Twój zewnętrzny numer IP" wget -nd -N http://ADRES_DEDYKA/ip.php --output-document=/home/USER/ip/ip.txt ip=`tail ip.txt` echo "Twoje aktualne zewnętrzne ip, to: "$ip i działa pięknie skrypt po wywołaniu zwraca prawidłową, aktualną wartość mojego zewnętrznego IP niestety nie działa dalsza część, ta linijka: sed -i 's/IP=.*\..*\..*\..*/IP='$ip'/' csf.allow nie powoduje żadnych zmian w pliku csf.allow (plik csf.allow znajduje się w tym samym katalogu, co skrypt) jakieś pomysły? jakich komend użyć, żeby: 1. usunąć ostatnią linijkę w pliku tekstowym, 2. na końcu pliku tekstowego zapisać jakiś tekst? Edytowano Maj 12, 2011 przez kors4r (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
igor_s 30 Zgłoś post Napisano Maj 12, 2011 1. usunąć ostatnią linijkę w pliku tekstowym, sed -i '3 d' plik // 3 numer wiersza 2. na końcu pliku tekstowego zapisać jakiś tekst? echo "jakiś tekst" >> plik Udostępnij ten post Link to postu Udostępnij na innych stronach
kors4r 0 Zgłoś post Napisano Maj 12, 2011 dobra, mam, bardzo dziękuję za pomoc podsumowując.... utworzyłem na dedyku plik ip.php, którego treść wygląda tak: <?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ $ip = $_SERVER['REMOTE_ADDR']; echo $ip; ?> potem w katalogu ~/ip utworzyłem skrypt "ip.sh", który wygląda tak: #!/bin/bash/ wget -nd -N -q http://ADRES_DEDYKA/ip.php --output-document=/home/NAZWA_UZYTKOWNIKA/ip/ip.txt ip=`tail ip.txt` data=`date` sed -i '20 d' csf.allow echo $ip' #dodano '$data' skryptem ip.sh' >> csf.allow #kopiowanie pliku csf.allow i restart csf na pierwszym serwerze scp csf.allow root@ADRES_IP_MOJEGO_DEDYKA_NR_1:/etc/csf/csf.allow ssh root@ADRES_IP_MOJEGO_DEDYKA_NR_1 '/etc/init.d/csf restart' #ta sama operacja dla drugiego serwera scp csf.allow root@ADRES_IP_MOJEGO_DEDYKA_NR_2:/etc/csf/csf.allow ssh root@ADRES_IP_MOJEGO_DEDYKA_NR_2 '/etc/init.d/csf restart' echo "Zrobiłem aktualizajcę dla Twojego ip, rozpoznanego jako "$ip jeszcze raz dziękuję, sporo mi to upraszcza teraz jeszcze tylko muszę znaleźć sposób, żeby mój nowy skrypt był automatycznie uruchamiany po nawiązaniu dowolnego połączenia (na razie dodam zadanie crona) i już w ogóle będzie cacy Udostępnij ten post Link to postu Udostępnij na innych stronach