[Bash]

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

tescik321
Użytkownik
Posty: 3
Rejestracja: 2015-07-31, 08:28

[Bash]

Post autor: tescik321 » 2015-07-31, 08:31

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.

Awatar użytkownika
webster
Użytkownik
Posty: 1266
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: [Bash]

Post autor: webster » 2015-07-31, 10:01

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.
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook

tescik321
Użytkownik
Posty: 3
Rejestracja: 2015-07-31, 08:28

Re: [Bash]

Post autor: tescik321 » 2015-07-31, 10:46

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?

Awatar użytkownika
webster
Użytkownik
Posty: 1266
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: [Bash]

Post autor: webster » 2015-07-31, 13:22

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
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook

tescik321
Użytkownik
Posty: 3
Rejestracja: 2015-07-31, 08:28

Re: [Bash]

Post autor: tescik321 » 2015-07-31, 13:49

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?

Awatar użytkownika
webster
Użytkownik
Posty: 1266
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: [Bash]

Post autor: webster » 2015-07-31, 14:57

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.
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook

ODPOWIEDZ