Skocz do zawartości
kors4r

Własny program ułatwiający zarządzanie

Polecane posty

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

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

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

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 przez igor_s (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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 przez kors4r (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

#!/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 przez igor_s (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

#!/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 przez kors4r (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

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 :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×