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 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.
#!/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.
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:
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:
#!/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
#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}
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".
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
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
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:
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!
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:
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.