Pagina 1 di 2
Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 9:04
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!
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 10:49
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
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:03
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
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:05
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à.
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:10
da Ansa89
Non ho capito una cosa: lo script è su chiavetta usb e usa solo file presenti sulla chiavetta?
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:18
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
per il resto invece del goto semplicemente digiti il nome della funzione, che crei così
e invece di goto per saltare subito devi usare if, o altre strutture di controllo
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:21
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!
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:25
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:
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
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:28
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
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:30
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:
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".
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:39
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
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:43
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:
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?
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:47
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
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:49
da targzeta
Ma i due ping**** e ping+++ sono su due macchine diverse o è semplicemente un doppio controllo se il primo non va?
Emanuele
Re: Shell script per pingare specifci host.....
Inviato: lun 12 lug 2010, 11:55
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!
Mi spiegate un po' meglio questa cosa per favore? Grazie della pazienza