Shell script per pingare specifci host.....

Postate qui per tutte le discussioni legate a Linux in generale.

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.
Lord_Nemesi
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: lun 19 apr 2010, 14:37
Nome Cognome: Lord Nemesi
Slackware: 13
Desktop: KDE

Shell script per pingare specifci host.....

Messaggio da Lord_Nemesi »

Ciao a tutti,
avrei bisogno di sapere qual è l'equivalente di questo script batch per linux:

Codice: Seleziona tutto

ping -n 2 -w 6000 www.google.com | findstr "TTL="
echo %errorlevel%

IF %ERRORLEVEL% EQU 0 goto PING Vattelapesca
IF %ERRORLEVEL% EQU 1 goto EMERGENCY
Grazie a tutti!

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Shell script per pingare specifci host.....

Messaggio da conraid »

fai prima a dirci cosa vuoi fare, anche perché non tutti qui sanno quei comandi, io per esempio non so il ping che citi che opzioni ha (immagino sia per windows) e cosa sia findstr (immagino una specie di grep)

poi il goto... mmm

se ho capito (e non è detto) dovrebbe essere una cosa così

Codice: Seleziona tutto

ping -c 2 http://www.google.com | grep ttl
echo $?

if [ $? != 0 ]; then
 EMERGENCY
else
 PING Vattelapesca
fi
se l'opzione w di quel ping è la dimensione del pacchetto allora usa -s, ma un "man ping" ti toglie i dubbi

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Shell script per pingare specifci host.....

Messaggio da Ansa89 »

conraid ha scritto:

Codice: Seleziona tutto

ping -c 2 http://www.google.com | grep ttl
echo $?

if [ $? != 0 ]; then
 EMERGENCY
else
 PING Vattelapesca
fi
Attenzione, in questo modo "$?" è sempre diverso da zero, quindi non si entrerà mai in "EMERGENCY".
Se il comando da testare è "ping -c 2 http://www.google.com | grep ttl", tanto vale metterlo direttamente come condizione:

Codice: Seleziona tutto

if ping -c 2 http://www.google.com | grep ttl ; then
   PING Vattelapesca
else
   EMERGENCY
fi

Lord_Nemesi
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: lun 19 apr 2010, 14:37
Nome Cognome: Lord Nemesi
Slackware: 13
Desktop: KDE

Re: Shell script per pingare specifci host.....

Messaggio da Lord_Nemesi »

Grazie della risposta super rapida. Ti spiego cosa devo fare:

lo script deve pingare google per stabilire se la macchina in questione è online a questo punto abbiamo due potenziali status:

0 ------> Google risponde e la macchina è online
1 ------> Google non risponde e la macchina è offline (o il mondo è finito... ASD)

se lo status è 1 lo script deve pescare una pagina html in locale (flashdrive usb) che notifichi l'errore

se google risponde il sistema deve fare un altro check su un altro url. se questo risponde lo collega tramite un browser portable residente su flash drive, se non lo collega pesca la solita pagina di errore.

il fidstr è l'equivalente windows di grep. Lo uso per vedere se il ping è andato a buon fine. Il goto è un cesso, e lo so, ma unser Windows, non c'è alternativa o non la conosco. Ti incollo lo script in toto con gli url di destinazione oscurati (purtroppo mi impongono riservatezza) così vedi il discorso corale.

Codice: Seleziona tutto

ping -n 2 -w 6000 www.google.com | findstr "TTL="
echo %errorlevel%

IF %ERRORLEVEL% EQU 0 goto PING_****
IF %ERRORLEVEL% EQU 1 goto EMERGENCY

:PING_****
ping -n 2 -w 6000 www.****.it | findstr "TTL="
echo %errorlevel%

IF %ERRORLEVEL% EQU 0 goto START_AVANT
IF %ERRORLEVEL% EQU 1 goto PING_++++

:PING_++++
ping -n 2 -w 6000 www.++++.it | findstr "TTL="
echo %errorlevel%

IF %ERRORLEVEL% EQU 0 goto MATEINANCE
IF %ERRORLEVEL% EQU 1 goto MATEINANCE_LOCAL

:START_AVANT
start PC\avant.exe http://www.****/support
GOTO :EOF

:EMERGENCY
start PC\avant.exe \PC\Error\error.htm
GOTO :EOF

:MATEINANCE
start PC\avant.exe http://www.++++/secret/
GOTO :EOF

:MATEINANCE_LOCAL
start PC\avant.exe \PC\Error\mant.htm
goto :EOF

:EOF
exit
Grazie ancora della disponibilità.

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Shell script per pingare specifci host.....

Messaggio da Ansa89 »

Non ho capito una cosa: lo script è su chiavetta usb e usa solo file presenti sulla chiavetta?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Shell script per pingare specifci host.....

Messaggio da conraid »

perché Stefano dici che è sempre diverso da zero? tutt'altro.
A parte che ho sbagliato che c'è http:// che va tolto, ma...
appunto con questo lo vedi, prova questi due

Codice: Seleziona tutto

#!/bin/sh
ping -c 2 http://www.google.com | grep ttl
echo $?

Codice: Seleziona tutto

#!/bin/sh
ping -c 2 www.google.com | grep ttl
echo $?
il primo da 1 il secondo 0
Lord_Nemesi ha scritto:Grazie della risposta super rapida. Ti spiego cosa devo fare:

lo script deve pingare google per stabilire se la macchina in questione è online a questo punto abbiamo due potenziali status:

0 ------> Google risponde e la macchina è online
1 ------> Google non risponde e la macchina è offline (o il mondo è finito... ASD)
.
o è google ad essere irrangiungibile, io farei un doppio controllo

Lord_Nemesi ha scritto: il fidstr è l'equivalente windows di grep. Lo uso per vedere se il ping è andato a buon fine.
in che senso? al limite vedi solo le righe di ping senza riassunto, etc... ma nello script non ti serve a niente. Meglio un

Codice: Seleziona tutto

ping -c 2 www.google.com > /dev/null
per il resto invece del goto semplicemente digiti il nome della funzione, che crei così

Codice: Seleziona tutto

nome_funzione() {
 etc...
}
e invece di goto per saltare subito devi usare if, o altre strutture di controllo

Lord_Nemesi
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: lun 19 apr 2010, 14:37
Nome Cognome: Lord Nemesi
Slackware: 13
Desktop: KDE

Re: Shell script per pingare specifci host.....

Messaggio da Lord_Nemesi »

Ansa89 ha scritto:Non ho capito una cosa: lo script è su chiavetta usb e usa solo file presenti sulla chiavetta?
Esatto. In pratica un utente infila la chiavetta usb ed esegue quello script!

Lord_Nemesi
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: lun 19 apr 2010, 14:37
Nome Cognome: Lord Nemesi
Slackware: 13
Desktop: KDE

Re: Shell script per pingare specifci host.....

Messaggio da Lord_Nemesi »

in che senso? al limite vedi solo le righe di ping senza riassunto, etc... ma nello script non ti serve a niente. Meglio un
Uhmmmm scusa ma se io eseguo una cosa del genere:

Codice: Seleziona tutto

ping www.google.com | grep "ttl="
se non c'è risposta al ping ho un exit stus = 1 (ovvero errore), se google risponde l'exit status è uguale a zero e si procede. Mi sbaglio?

Grazie

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Shell script per pingare specifci host.....

Messaggio da Ansa89 »

conraid ha scritto:perché Stefano dici che è sempre diverso da zero? tutt'altro.
A parte che ho sbagliato che c'è http:// che va tolto, ma...
appunto con questo lo vedi, prova questi due

Codice: Seleziona tutto

#!/bin/sh
ping -c 2 http://www.google.com | grep ttl
echo $?
Esatto, ma poi vai a controllare il codice di uscita di "echo $?", il quale è sempre diverso da zero.
Prova:

Codice: Seleziona tutto

ping -c 3 192.168.7.102 | grep -i ttl
echo $?
if [ $? != 0 ]; then
   echo ciao
fi

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Shell script per pingare specifci host.....

Messaggio da Ansa89 »

Lord_Nemesi ha scritto:
in che senso? al limite vedi solo le righe di ping senza riassunto, etc... ma nello script non ti serve a niente. Meglio un
Uhmmmm scusa ma se io eseguo una cosa del genere:

Codice: Seleziona tutto

ping www.google.com | grep "ttl="
se non c'è risposta al ping ho un exit stus = 1 (ovvero errore), se google risponde l'exit status è uguale a zero e si procede. Mi sbaglio?

Grazie
Se google non è raggiungibile, grep non trova corrispondenze con "ttl=" e ritorna "1".

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Shell script per pingare specifci host.....

Messaggio da conraid »

Ansa89 ha scritto:
conraid ha scritto:perché Stefano dici che è sempre diverso da zero? tutt'altro.
A parte che ho sbagliato che c'è http:// che va tolto, ma...
appunto con questo lo vedi, prova questi due

Codice: Seleziona tutto

#!/bin/sh
ping -c 2 http://www.google.com | grep ttl
echo $?
Esatto, ma poi vai a controllare il codice di uscita di "echo $?", il quale è sempre diverso da zero.
Prova:

Codice: Seleziona tutto

ping -c 3 192.168.7.102 | grep -i ttl
echo $?
if [ $? != 0 ]; then
   echo ciao
fi
si è vero, del resto gli echo in uno script se non in caso di debug non hanno senso, comunque hai ragione, non ci avevo fatto caso

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Shell script per pingare specifci host.....

Messaggio da conraid »

Lord_Nemesi ha scritto:
in che senso? al limite vedi solo le righe di ping senza riassunto, etc... ma nello script non ti serve a niente. Meglio un
Uhmmmm scusa ma se io eseguo una cosa del genere:

Codice: Seleziona tutto

ping www.google.com | grep "ttl="
se non c'è risposta al ping ho un exit stus = 1 (ovvero errore), se google risponde l'exit status è uguale a zero e si procede. Mi sbaglio?

Grazie
a parte quel che ti ha detto Stefano, ma a che ti serve quel grep?

Lord_Nemesi
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: lun 19 apr 2010, 14:37
Nome Cognome: Lord Nemesi
Slackware: 13
Desktop: KDE

Re: Shell script per pingare specifci host.....

Messaggio da Lord_Nemesi »

Ok, grazie a i vostri preziosi e pazienti consigli..pian piano funziona. Allora....la prima cosa che deve fare sto maledetto script è controllare se la macchina dal quale viene eseguito è online, e lo fa con questo pezzo di codice (lasciate perdere gli echo, mi son serviti per provare lo status di on e off line)

Codice: Seleziona tutto

#PING_GOOGLE
if ping -c 4 www.google.com | grep "ttl=" ; then
echo success
else
echo you fail
fi
A questo punto mi servirebbe capire come procedere nei suoi compiti di controllo. Allora...se il ping va a buon fine deve eseguire un altro controllo identico a quello di su google, se invece non va a buon fine lancia un browser portable che pesca una pagina html di errore. Grazie ancora

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Shell script per pingare specifci host.....

Messaggio da targzeta »

Ma i due ping**** e ping+++ sono su due macchine diverse o è semplicemente un doppio controllo se il primo non va?

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Lord_Nemesi
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: lun 19 apr 2010, 14:37
Nome Cognome: Lord Nemesi
Slackware: 13
Desktop: KDE

Re: Shell script per pingare specifci host.....

Messaggio da Lord_Nemesi »

spina ha scritto:Ma i due ping**** e ping+++ sono su due macchine diverse o è semplicemente un doppio controllo se il primo non va?

Emanuele
La macchina è la stessa sono gli url ad essere diversi.
Primo ping su google: se è ok, pinga un altro url, se questo è ok ne pinga un altro, se anche questo è ok collega una pagina web.
questo nel caso tutto vada bene. Quello che mi serve di capire, è come passare da un controllo all'altro!

Codice: Seleziona tutto

nome_funzione() {
etc...
}
Mi spiegate un po' meglio questa cosa per favore? Grazie della pazienza
Ultima modifica di Lord_Nemesi il lun 12 lug 2010, 12:00, modificato 1 volta in totale.

Rispondi