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.
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: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à.
Può diventare una cosa tipo:

Codice: Seleziona tutto

#!/bin/bash
if ping -c 2 www.google.com ; then
   if ping -c 2 www.****.it ; then
      exec PC/browser http://www.****/support
      exit
   elif ping -c 2 www.++++.it ; then
      exec PC/browser http://www.++++/secret/
      exit
   else
      exec PC/browser PC/Error/mant.htm
      exit
   fi
else
   exec PC/browser PC/Error/error.htm
   exit
fi
Dove "browser" è l'equivalente linux di "avant.exe".
Però ho dei dubbi sull'utilizzo di "exec" e sui path; magari se spina o conraid ci danno una guardata è meglio.

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 »

Innanzi tutto secondo me pingare google è inutile, a te che ti frega sapere se sei online o meno? Ti basta vedere se raggiungi l'url che vuoi. Questo codice è un esempio:

Codice: Seleziona tutto

#!/bin/bash

function _ping()
{
  return $(ping -c 4 -W 10 $1 >& /dev/null)
}

if _ping www.google.it; then
  echo 'ok'
else
  avant PC/Error/error.htm
fi
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:Innanzi tutto secondo me pingare google è inutile, a te che ti frega sapere se sei online o meno? Ti basta vedere se raggiungi l'url che vuoi. Questo codice è un esempio:

Codice: Seleziona tutto

#!/bin/bash

function _ping()
{
  return $(ping -c 4 -W 10 $1 >& /dev/null)
}

if _ping www.google.it; then
  echo 'ok'
else
  avant PC/Error/error.htm
fi
Emanuele
Pingare google serve a stabilire se la macchina è online o meno. Se non è online c'è uno specifico messaggio di errore, se è un particolare url ad essere offline il messaggio di errore è diverso e anche ciò che ne consegue. Per farla breve:

gooogle off line: è la tua linea che non va = cazzi tuoi
il mio url off line= scusa ho dei problemi adesso sistemo

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 »

Scusate ma una cosa simile:

Codice: Seleziona tutto

#PING_GOOGLE
if ping -c 4 -W 6 $HOST_G | grep "ttl=" ; then
***posso lanciare la funzione test da qui?****
else
echo SEI OFFLINE!
fi

TEST ()
{echo test}

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 »

Certo che puoi.
Le funzioni le puoi invocare dove ti fa più comodo; nell'esempio di spina, faceva comodo il valore di ritorno della funzione, quindi veniva invocata nell'espressione condizionale dell'"if".

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 »

Questo codice sembra funzionare:

Codice: Seleziona tutto

function _ping()
{
  return $(ping -c 4 -W 10 $1 >& /dev/null)
}

if ! _ping www.google.it; then
  browser PC/Error/error.htm
elif _ping www.****; then
  browser http://www.****/support
elif _ping www.++++; then
  browser http://www.++++/secret/ 
else
  browser PC/Error/mant.htm
fi
Da notare che non tutti rispondono al ping.
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 »

Ansa89 ha scritto:Certo che puoi.
Le funzioni le puoi invocare dove ti fa più comodo; nell'esempio di spina, faceva comodo il valore di ritorno della funzione, quindi veniva invocata nell'espressione condizionale dell'"if".
Uhmmm, per invocarla dal punto che ho indicato è sufficiente citarne il nome? Scusate, ma è decisamente diverso dal batch scripting al quale sono abituato. :(

Se ho capito bene così dovrebbe lanciare la funzione test. Se la sintassi è sbagliata mi dite dove please? Grazie

Codice: Seleziona tutto

#PING_GOOGLE
if ping -c 4 -W 6 $HOST_G | grep "ttl=" ; then
TEST
else
echo SEI OFFLINE!
fi

TEST ()
{echo test}
Grazie infinite

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:Questo codice sembra funzionare:

Codice: Seleziona tutto

function _ping()
{
  return $(ping -c 4 -W 10 $1 >& /dev/null)
}

if ! _ping www.google.it; then
  browser PC/Error/error.htm
elif _ping www.****; then
  browser http://www.****/support
elif _ping www.++++; then
  browser http://www.++++/secret/ 
else
  browser PC/Error/mant.htm
fi
Da notare che non tutti rispondono al ping.
Emanuele
Il tuo script mi sembra decisamente più bello ma ho qualche difficoltà a comprenderne la sintassi...se hai voglia di spiegarmela te ne sarei davvero grato!
Grazie

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 »

Lord_Nemesi ha scritto:
spina ha scritto:Ma i due ping**** e ping+++ sono su due macchine diverse o è semplicemente un doppio controllo se il primo non va?
...
La macchina è la stessa sono gli url ad essere diversi.
Mi sono accorto ora di questa risposta. Se la macchina è la stessa è difficile che se il primo ping non vada il secondo vada: il ping è indifferente all'url, lui pinga una macchina non una pagina web.
Lord_Nemesi ha scritto:....Il tuo script mi sembra decisamente più bello ma ho qualche difficoltà a comprenderne la sintassi...se hai voglia di spiegarmela te ne sarei davvero grato!...
Beh, è abbastanza intuitivo no? Leggi il man della bash per capire la sintassi della bash :). In particolare apri il man e cerca "Compound Commands" e quindi leggi la sintassi di:

Codice: Seleziona tutto

if list; then list; [ elif list; then list; ] ... [ else list; ] fi
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 »

Mi sono accorto ora di questa risposta. Se la macchina è la stessa è difficile che se il primo ping non vada il secondo vada: il ping è indifferente all'url, lui pinga una macchina non una pagina web.
Intendevo che la macchina dai cui partono tutti i comandi è la stessa. Se google è in up non è detto che lo sia aruba. Lo script servirebbe a quello....a controllare che una serie di url risponda al ping per poi lanciare un'applicazione che deve contattare uno di questi url!

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 »

Lord_Nemesi ha scritto:
Mi sono accorto ora di questa risposta. Se la macchina è la stessa è difficile che se il primo ping non vada il secondo vada: il ping è indifferente all'url, lui pinga una macchina non una pagina web.
Intendevo che la macchina dai cui partono tutti i comandi è la stessa. Se google è in up non è detto che lo sia aruba. Lo script servirebbe a quello....a controllare che una serie di url risponda al ping per poi lanciare un'applicazione che deve contattare uno di questi url!
Però fai attenzione, il ping non si basa su url ma su host. Io ti avevo chiesto:
spina ha scritto:Ma i due ping**** e ping+++ sono su due macchine diverse o è semplicemente un doppio controllo se il primo non va?
e tu mi hai risposto:
Lord_Nemesi ha scritto:La macchina è la stessa sono gli url ad essere diversi.
Fare due ping alla stessa macchina con url diversi è inutile. E' questo che ti voglio dire, cioé ad esempio questi due ping sono equivalenti:

Codice: Seleziona tutto

ping http://www.slacky.eu
ping http://www.slacky.eu/forum
se http://www.slacky.eu risponde ai ping ed è online, allora tutte e due i ping avranno esito positivo, altrimenti tutti e due avranno esito negativo.

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

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

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

Messaggio da ZeroUno »

spina ha scritto:

Codice: Seleziona tutto

ping http://www.slacky.eu
ping http://www.slacky.eu/forum
se http://www.slacky.eu risponde ai ping ed è online
http://www.slacky.euhttp://www.slacky.eu/forum risponderanno mai al ping.
Semmai al ping risponderà http://www.slacky.eu (senza http)

edit:
N.B: lo sapevo che lo sai, ma è giusto per precisare a chi legge senza sapere, che ping http://www.slacky.eu non risponde perchè è sbagliata la sintassi.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi