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

Kod: Zaznacz cały

chmod +x telnet_test.sh
i uruchom

Kod: Zaznacz cały

./telnet_test.sh
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.