dovrei scrivere uno script (mi cimento) e vorrei capire una buona istruzione che mi restituisce 0 se la rete è up e 1 se la rete è down...qualche volenteroso sa darmi una dritta?
Grazie
dovrei scrivere uno script (mi cimento) e vorrei capire una buona istruzione che mi restituisce 0 se la rete è up e 1 se la rete è down...qualche volenteroso sa darmi una dritta?
Grazie
Se aspetti una settimana magari ti aiuto io... mi sono stampato questa e nel week end inizio a studiarmela. Magari potrà tornare utile pure a te
http://www.pluto.it/files/ildp/guide/abs/index.html
---Che solo luce e amore ha per confine---
il comando che segue ti mostra a video:
0 se riesci ad accedere a google
un valore > 0 se ci sono problemi
volendo riadattando questo puoi vedere se hai accesso o meno ad internet, per testare la connettività sulla lan ti basta sostituire www.google.it con l'indirizzo ip di un host che sai essere di sicuro attivo nella tua rete locale (ad esempio il gateway).Codice:ping www.google.it -c 1 2>&1 > /dev/null; echo $?
Occhio che tutto cio' presuppone che non ci siano filtri che bloccano il traffico ICMP relativo al comando ping.
-------------------------------------
Admin di Lithium.it
quindi volendo usare questa istruzione in uno script mi basta fare un
VAR='ping www.google.it -c 1 2>&1 > /dev/null; echo $?'
Giusto? Se si saresti così gentile da spiegare la sintassi?
Grazie prof.![]()
in realtà devi usare gli apici inversi ` e non quello normale '
veniamo alla sintassi dei parametri dati a ping (ping sai cose'è e anche www.google.it):Codice:VAR=`ping www.google.it -c 1 2>&1 > /dev/null; echo $?`
: -c 1 => solo una richiesta
2>&1 è un costrutto della shell e dice di redirigere lo standard error (2) sullo standard input (1)
> /dev/null è sintassi della shell e redirige lo standard output nel file /dev/null (in pratica nel nulla).
tutto cio' a parole:
manda un solo pacchetto ICMP di echo-reply (ping) a www.google.it, manda i messaggi di errore sull'output e manda l'output dentro /dev/null , fatto cio' mettimi a video il codice di ritorno del programma ping appena terminato.
di solito il ritorno 0 è considerato "SUCCESSO", mentre altri valori indicano problemi o condizioni particolari
echo è un comando che manda a video stringhe
$? è la variabile di shell che indica il valore di uscita del programma appena terminato
-------------------------------------
Admin di Lithium.it
ottimo...ora infatti lo script che ho fatto funziona (lo mando ogni 5 minuti)...però noto nei log che subito dopo parte una mail...in pratica ogni 5 minuti partono mail per non so dove... come eliminare sto fatto?
lse vuoi posto lo script pcosì dai un'occhiata all'output dove va a finire...
posta pure lo script, cmq ricorda che tutto cio' che è in cron genera una mail diretta all'utente associato alle operazioni in questione (se lo script è in cron per root allora la mail andrà a root) se viene tentato l'invio a video di qualche stringa.
-------------------------------------
Admin di Lithium.it
ecco lo script
#!/bin/sh
# controlla attraverso il ping se la rete è giù
VAR=`ping -c 1 sip.messagenet.it > /dev/null; echo $?`
# se var non e' uguale a zero vuol dire che la rete è down
if [ $VAR -ne 0 ]; then
if [ -f /etc/asterisk/sip_providers.conf ]; then
mv /etc/asterisk/sip_providers.conf /etc/asterisk/sip_providers.bak
/usr/sbin/asterisk -r -x "reload"
fi
else
# la rete e' attiva
if [ -f /etc/asterisk/sip_providers.conf ]; then
# la rete era attiva anche precedentente non prendiamo alcuna azione
# non eseguiamo alcuna azione
echo 1 > /dev/null
else
# la rete non era attiva precedentemente attiviamo il flag di rete
# e riattiviamo la configurazione di asterisk di default
mv /etc/asterisk/sip_providers.bak /etc/asterisk/sip_providers.conf
/usr/sbin/asterisk -r -x "reload"
fi
fi
come faccio ad evitare l'invio della mail???
Fai conto che lo mando ogni 5 minuti con un file del tipo
5 * * * * script.sh
10 * * * * script.sh
etc... fino a 59
spero di essere stato chiaro
eccoti la soluzione, inserisci in crontab la seguente riga (al posto delle tue N):
*/5 * * * * /bin/sh script.sh 2> /tmp/script_err > /tmp/script_log
-------------------------------------
Admin di Lithium.it
inh questo modo tutto l'output va nei log giusto?
Se invece voglio che non vi sia output a nessuna parte faccio un
2> /dev/null
giusto?
con > redirigi l'output, con 2> redirigi gli errori , per redirigere entrambi devi usare > filename 2> filename (al posto di filename metit path e nome file del caso).
/dev/null in effetti indica "il nulla"
-------------------------------------
Admin di Lithium.it
ottimo air!! Sembra funzionare bene...anche se a volte sembra come se lo script non parta..
cmq una info che mi serviva...esiste un comando di sistema che mi permette di aspettare 20 secondi senza far nulla?
Mi serve poichè nello script devo lanciare una chiamata...aspettare 20 secondi e poi lanciarla nuovamente e così via ...per 5 volte!
Grazie mille
sleep NUM_SECONDI
per altre info, come al solito, "man sleep"![]()
-------------------------------------
Admin di Lithium.it
ok...ghrazie mille...un'ultima cosa...vorrei fare un controllo in cui continua a ripetere una chiamata fino a che non esiste un determinato file.
Cioè io cerco di chiamare un numero...nel momento questo diventa raggiungibile viene scritto un file. Io controllo che questo file esiste e quindi smetto di chiamare.
thank 10000
ricorda soloCodice:while [ ! -e /path_al_file/nomefile ]; do contatta_numero if [ condizione_vera ]; then touch /path_al_file/nomefile fi done
di mettere da qualche parte uno script che elimina tale file una volta che non ti server piu'
-------------------------------------
Admin di Lithium.it
Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)
Musica