Catturare i risultati di un ping
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Catturare i risultati di un ping
Ciao a tutti.
<BR>Ho l´esigenza di dover effettuare delle operazioni in base ai risultati di un ping.
<BR>Vorrei fare uno script che pinghi un particolare Ip e in base ai risultati di questa operazione spenga la macchina.
<BR>Nello Specifico: ho un server attaccato ad un gruppo di continuità non gestibile con Acpusd, ho l´hag di fastweb che ha un ip non attaccato a nessun UPS.
<BR>Voglio pingare a ripetizione (ogni 10 min) l´hag e se non risponde (diciamo se i pacchetti ricevuti sono inferiori al 30%) voglio spegnere il pc.
<BR>Userei sleep per le ripetizioni, ma non so proprio come catturare i risultati del ping...
<BR>Che mi consigliate?
<BR>
<BR>Ciao e Grazie.<br>
<BR>Ho l´esigenza di dover effettuare delle operazioni in base ai risultati di un ping.
<BR>Vorrei fare uno script che pinghi un particolare Ip e in base ai risultati di questa operazione spenga la macchina.
<BR>Nello Specifico: ho un server attaccato ad un gruppo di continuità non gestibile con Acpusd, ho l´hag di fastweb che ha un ip non attaccato a nessun UPS.
<BR>Voglio pingare a ripetizione (ogni 10 min) l´hag e se non risponde (diciamo se i pacchetti ricevuti sono inferiori al 30%) voglio spegnere il pc.
<BR>Userei sleep per le ripetizioni, ma non so proprio come catturare i risultati del ping...
<BR>Che mi consigliate?
<BR>
<BR>Ciao e Grazie.<br>
Catturare i risultati di un ping
questa e´ la teoria:
<BR>dal man di ping trovi come poter fare N pings del computer e forwardi il risultato su di un file.
<BR>dal file estrai attraverso awk il testo 0% packet loss quindi sempre con awk prendi il numero precedente al % e poi esegui un if.
<BR>per awk in rete ci sono molte guide.
<BR>puoi usare volendo anche sed per "editare" il file in modo da prendere solo la stringa interessante.<br>
<BR>dal man di ping trovi come poter fare N pings del computer e forwardi il risultato su di un file.
<BR>dal file estrai attraverso awk il testo 0% packet loss quindi sempre con awk prendi il numero precedente al % e poi esegui un if.
<BR>per awk in rete ci sono molte guide.
<BR>puoi usare volendo anche sed per "editare" il file in modo da prendere solo la stringa interessante.<br>
Catturare i risultati di un ping
Grande!!! Ora ci provo.
<BR>Ciao
<br>
<BR>Ciao
- useless
- Staff

- Messaggi: 3896
- Iscritto il: dom 12 ott 2003, 0:00
- Località: A place where the streets have no name
- Contatta:
Catturare i risultati di un ping
forse ti puoi anche semplificare la vita sapendo che se ping riesce a pingare esce con 0, se non riesce esce con 1.
<BR>
<BR><!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR>sukko@unholycathedral ~ $ ping 10.0.6.99 -c3
<BR>PING 10.0.6.99 (10.0.6.99) 56(84) bytes of data.
<BR>From 10.0.6.1 icmp_seq=1 Destination Host Unreachable
<BR>From 10.0.6.1 icmp_seq=2 Destination Host Unreachable
<BR>From 10.0.6.1 icmp_seq=3 Destination Host Unreachable
<BR>
<BR>--- 10.0.6.99 ping statistics ---
<BR>3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2009ms
<BR>, pipe 3
<BR>sukko@unholycathedral ~ $ echo $?
<BR>1
<BR>sukko@unholycathedral ~ $ ping 10.0.6.5 -c3
<BR>PING 10.0.6.5 (10.0.6.5) 56(84) bytes of data.
<BR>64 bytes from 10.0.6.5: icmp_seq=1 ttl=64 time=0.416 ms
<BR>64 bytes from 10.0.6.5: icmp_seq=2 ttl=64 time=0.396 ms
<BR>64 bytes from 10.0.6.5: icmp_seq=3 ttl=64 time=0.396 ms
<BR>
<BR>--- 10.0.6.5 ping statistics ---
<BR>3 packets transmitted, 3 received, 0% packet loss, time 1998ms
<BR>rtt min/avg/max/mdev = 0.396/0.402/0.416/0.025 ms
<BR>sukko@unholycathedral ~ $ echo $?
<BR>0
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>
<BR>estrarre il packet loss non è banale, xké cambia di posizione se l´host risponde o meno. pare comunque che una roba del genere funzioni:
<BR><!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR>sukko@unholycathedral ~ $ ping 10.0.6.99 -c1 | grep "packet loss" | sed "s/.* \([0-9]*\)% packet loss.*/\1/"
<BR>100
<BR>sukko@unholycathedral ~ $ ping 10.0.6.5 -c1 | grep "packet loss" | sed "s/.* \([0-9]*\)% packet loss.*/\1/"
<BR>0
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>
<BR>si potrebbero migliorare i pattern, ma non mi è ancora ben chiaro cosa accetti sed e cosa no.
<BR>buon lavoro
.<br>
<BR>
<BR><!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR>sukko@unholycathedral ~ $ ping 10.0.6.99 -c3
<BR>PING 10.0.6.99 (10.0.6.99) 56(84) bytes of data.
<BR>From 10.0.6.1 icmp_seq=1 Destination Host Unreachable
<BR>From 10.0.6.1 icmp_seq=2 Destination Host Unreachable
<BR>From 10.0.6.1 icmp_seq=3 Destination Host Unreachable
<BR>
<BR>--- 10.0.6.99 ping statistics ---
<BR>3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2009ms
<BR>, pipe 3
<BR>sukko@unholycathedral ~ $ echo $?
<BR>1
<BR>sukko@unholycathedral ~ $ ping 10.0.6.5 -c3
<BR>PING 10.0.6.5 (10.0.6.5) 56(84) bytes of data.
<BR>64 bytes from 10.0.6.5: icmp_seq=1 ttl=64 time=0.416 ms
<BR>64 bytes from 10.0.6.5: icmp_seq=2 ttl=64 time=0.396 ms
<BR>64 bytes from 10.0.6.5: icmp_seq=3 ttl=64 time=0.396 ms
<BR>
<BR>--- 10.0.6.5 ping statistics ---
<BR>3 packets transmitted, 3 received, 0% packet loss, time 1998ms
<BR>rtt min/avg/max/mdev = 0.396/0.402/0.416/0.025 ms
<BR>sukko@unholycathedral ~ $ echo $?
<BR>0
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>
<BR>estrarre il packet loss non è banale, xké cambia di posizione se l´host risponde o meno. pare comunque che una roba del genere funzioni:
<BR><!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR>sukko@unholycathedral ~ $ ping 10.0.6.99 -c1 | grep "packet loss" | sed "s/.* \([0-9]*\)% packet loss.*/\1/"
<BR>100
<BR>sukko@unholycathedral ~ $ ping 10.0.6.5 -c1 | grep "packet loss" | sed "s/.* \([0-9]*\)% packet loss.*/\1/"
<BR>0
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>
<BR>si potrebbero migliorare i pattern, ma non mi è ancora ben chiaro cosa accetti sed e cosa no.
<BR>buon lavoro
Catturare i risultati di un ping
Grazie a tutti dell´aiuto.
<BR>Grazie in particolare a Usless.... le tue indicazioni mi hanno fornito una via sulla quale ho lavorato.... di certo awk devo impararlo...
<BR>
<BR>Lo script che ho scritto è il seguente... lo stile è pessimo, però continuava a darmi errori, così ho fatto quanto segue:
<BR>
<BR>________________________________________________________________________________
<BR>
<BR>#!/bin/bash
<BR>IP=213.156.54.80
<BR>A=1
<BR>B=2
<BR>sleep 150
<BR>while [ $A -lt $B ]; do
<BR> if ping $IP -c 5 >/dev/null
<BR> then
<BR> echo >/dev/null
<BR> else
<BR> init 0;
<BR> fi
<BR>sleep 400
<BR>done
<BR>exit
<BR>_____________________________________________________________________________
<BR>
<BR>
<BR>Ciao a tutti e di nuovo GRAZIE!!!!
<BR>Ciao
<br>
<BR>Grazie in particolare a Usless.... le tue indicazioni mi hanno fornito una via sulla quale ho lavorato.... di certo awk devo impararlo...
<BR>
<BR>Lo script che ho scritto è il seguente... lo stile è pessimo, però continuava a darmi errori, così ho fatto quanto segue:
<BR>
<BR>________________________________________________________________________________
<BR>
<BR>#!/bin/bash
<BR>IP=213.156.54.80
<BR>A=1
<BR>B=2
<BR>sleep 150
<BR>while [ $A -lt $B ]; do
<BR> if ping $IP -c 5 >/dev/null
<BR> then
<BR> echo >/dev/null
<BR> else
<BR> init 0;
<BR> fi
<BR>sleep 400
<BR>done
<BR>exit
<BR>_____________________________________________________________________________
<BR>
<BR>
<BR>Ciao a tutti e di nuovo GRAZIE!!!!
<BR>Ciao
- useless
- Staff

- Messaggi: 3896
- Iscritto il: dom 12 ott 2003, 0:00
- Località: A place where the streets have no name
- Contatta:
Catturare i risultati di un ping
if ping $IP -c 5 >/dev/null
<BR> then
<BR> echo >/dev/null
<BR> else
<BR> init 0;
<BR> fi
<BR>
<BR>forse suona meglio:
<BR>if ! ping $IP -c 5 >/dev/null
<BR>shutdown -h now
<BR>fi
<BR>
<BR>cambia niente comunque
.
<BR>se vuoi lavorare sulla percentuale di pacchetti persi comunque usa quella roba in sed qua sopra.<br>
<BR> then
<BR> echo >/dev/null
<BR> else
<BR> init 0;
<BR> fi
<BR>
<BR>forse suona meglio:
<BR>if ! ping $IP -c 5 >/dev/null
<BR>shutdown -h now
<BR>fi
<BR>
<BR>cambia niente comunque
<BR>se vuoi lavorare sulla percentuale di pacchetti persi comunque usa quella roba in sed qua sopra.<br>
Catturare i risultati di un ping
Tanx.
<BR>
<BR>Ciao
<br>
<BR>
<BR>Ciao

