Portál AbcLinuxu, 5. května 2025 04:54

Dotaz: skript pro ping a telnet

10.3.2010 09:56 Kaja
skript pro ping a telnet
Přečteno: 586×
Odpovědět | Admin

Zdravim dobri lide,

potreboval bych poradit s jednim skriptikem.

Jde mi o neustale zjistovani dostupnosti hosta. Pokud je host online, skript by se mel pripojit telnetem na port 21 a vystup ukladat do souboru. Pokud se klient odpoji, spojeni by se melo zavrit a opet pokracovat v overeni dostupnosti a tak dokola. Pokusil jsem se na to neco napsat, ale neni to 100% funkcni. Nekdy to skonci na cyklu while u read - skript si mysli, ze je klient online, ale neni a ceka na data, ktera nejdou.

#!/bin/bash

ADRESA=$1

while [ 1 ]
do
PING=$(ping -W 1 -c 1 $ADRESA | grep "from" | awk '{print $(NF-1)}')
if [[ $PING == *time* ]]; then
# Je online
# Otevreme spojeni
#echo "Online, oteviram socket"
exec 3</dev/tcp/$ADRESA/21

# Zacneme cist data
while read <&3
do
set -- ${REPLY//$'\r'/}
TODAY=$(/bin/date +'%Y%m%d')
TIME=$(/bin/date +'%H:%M:%S')
#echo "ctu ..."
echo -e "$TIME\n$REPLY\n" >> /scripts/kas/logs/$TODAY-$ADRESA.log

PING=$(ping -W 1 -c 1 $ADRESA | grep "from" | awk '{print $(NF-1)}')

# Jestlize neni odezva, prerusime cyklus a zavreme socket
if [[ $PING != *time* ]]; then
#echo "Disconnected"
exec 3<&-
break;
fi

done

#else
# Neni online
#echo "Timed out"
fi
sleep 1
done

Nemel by z Vas nekdo lepsi napad, jak by se to dalo vylepsit a osetrit tuhle chybu?

Mockrat diky!

Kaja


Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Fuky avatar 10.3.2010 11:49 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: skript pro ping a telnet
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:

V příloze máš ukázkový skriptík v Pythonu. Řešit takového klient v Bashi nemá smysl.

Když ho spustíš, tak se pokusí připojit na:

$ nc -l -p 5000 127.0.0.1

Pokud se nepodaří připojit k serveru, uloží tuto informaci do logu a za 3s to zkusí znovu, pokud se to znovu nepodaří, tak neprovádí logování stejné chyby, pouze pokud by se vyskytla za dobu delší než 60s. Používat ping je zbytečné. Log sype do:

$ tail -f /tmp/client.log
2010-03-10 11:40:10,674 - INFO - starting client 0.1.0
2010-03-10 11:40:10,675 - INFO - create connection to 127.0.0.1:5000
2010-03-10 11:40:17,377 - INFO - receive data: 'Hello'
2010-03-10 11:40:18,969 - INFO - receive data: 'Bye'
2010-03-10 11:40:19,898 - INFO - close connection to 127.0.0.1:5000
2010-03-10 11:40:22,896 - ERROR - TCP client exception
Traceback (most recent call last):
  File "./client.py", line 43, in main_thread
    self.socket.connect((self.address, self.port))
  File "<string>", line 1, in connect
error: (111, 'Connection refused')
2010-03-10 11:45:04,681 - INFO - received signal 2
2010-03-10 11:45:04,682 - INFO - exit
-- RÁMO: psí tábor , ETriatlon: Výuka plavání
10.3.2010 14:45 Kaja
Rozbalit Rozbalit vše Re: skript pro ping a telnet
Diky!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.