Strona 1 z 1
[Bash]
: 2015-07-31, 08:31
autor: tescik321
Czesc,
jestem tutaj nowy (jak tez w linuxie) i potrzebowalbym pomocy z napisaniem prostego skryptu, ktory z listy serwerow w pliku (badz taka liste generowalby na biezaco za pomoca linijki kodu, ktora juz mam) odpytywalby kazdy z serwerow przez telnet (po danym porcie) i w razie niepolaczenia przez np. 5 czy 10 sekund, pisalby blad, a w razie poprawnego polaczenia pisalby ok.
Re: [Bash]
: 2015-07-31, 10:01
autor: webster
pliki: lista_serwerow telnet_test.sh
Do pliku
lista_serwerow wrzucasz listę serwerów po IP, jeden pod drugim
to pliku
telnet_test.sh Wrzucasz
Kod: Zaznacz cały
#!/bin/bash
SERVER_LIST='lista_serwerow'
TELNET_PORT='25'
for SERVER in $(cat ${SERVER_LIST});do
netcat -z ${SERVER} ${TELNET_PORT}
if [ $? -eq 0 ]
then
echo "Telnet serwera ${SERVER} na porcie ${TELNET_PORT} DZIALA"
else
echo "Telnet serwera ${SERVER} na porcie ${TELNET_PORT} !!! NIE DZIALA !!!"
fi
done
Jesli inny port jak 25 - SMTP - na tym testowałem, to sobie zmień na inny.
Zapisz, nadaj prawa wykonywania
i uruchom
Pozdr.
Re: [Bash]
: 2015-07-31, 10:46
autor: tescik321
A czy można to jakoś uprościć, żeby nie tworzyć pliku z serwerami, a żeby lista ta była generowana automatycznie w tym skrypcie, korzystając z innego skryptu, ktory juz mam? - to jest linijka kodu.
I czy moglbym uzyc telnet zamiast netcat? (nie moge uzyc netcat)
Jak polacze sie przez telnet z serwerem, to otrzymuje:
Trying ip_serwera...
Connected to ip_serwera
Escape character is '^]'.
SSH-2.0-6.3.8.79 SSH Tectia Server
Connection closed by foreign host.
jak nie da sie polaczyc, to jest tylko trying ip_serwera...
jak to wstawic do warunku? i jak ustawic jakis timeout dla sytuacji, kiedy nie chce sie polaczyc?
Re: [Bash]
: 2015-07-31, 13:22
autor: webster
Kod: Zaznacz cały
#!/bin/bash
SERVER_LIST='192.168.0.216 192.168.0.222'
TELNET_PORT='25'
for SERVER in ${SERVER_LIST};do
test "$(echo exit|telnet ${SERVER} 25 2>/dev/null |grep -i connected)"
if [ $? -eq 0 ]
then
echo "Telnet serwera ${SERVER} na porcie ${TELNET_PORT} DZIALA"
else
echo "Telnet serwera ${SERVER} na porcie ${TELNET_PORT} !!! NIE DZIALA !!!"
fi
done
Re: [Bash]
: 2015-07-31, 13:49
autor: tescik321
tylko pojawia się tutaj problem w sytuacji, kiedy serwer telnet nie odpowiada - da sie zrobic jakis timeout, zeby po krotkim czasie (np. 3-5 sekund) zwracal, ze telnet nie odpowiada?
Re: [Bash]
: 2015-07-31, 14:57
autor: webster
Lol, Zrobisz coś sam, czy na gotowca w 100% czekasz? Bo to trochę żałosne się zaczyna robić. Dałem Tobie dwa gotowce, zrób coś sam.