Indice del forum www.zeroshell.net
Distribuzione Linux ZeroShell
 
 FAQFAQ   CercaCerca  GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo  Log inLog in   Messaggi privatiMessaggi privati 

Script su ETH down

 
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell
Precedente :: Successivo  
Autore Messaggio
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Ven Gen 15, 2010 10:59 am    Oggetto: Script su ETH down Rispondi citando

Non conosco molto linux , ma sto testando zeroshell su vmware e sono rimasto piacevolmente sorpreso.
Vorrei capire però se è possibile far partire uno script nel caso una interfaccia sia down. Ho visto lo script che manda la mail, ho provato ad installarlo ma non appena faccio il reboot , tutto funziona, ma l'interfaccia web del net balancer mi da errrore e le mail non arrivano anche se i link vanno down.
Potete aiutarmi sia ad installare lo script dele email che a far partire un altro script in caso di down?
grazie
Top
Profilo Invia messaggio privato
lorenzo



Registrato: 02/12/08 11:02
Messaggi: 81

MessaggioInviato: Mar Gen 19, 2010 11:00 am    Oggetto: Rispondi citando

Ciao,

dove hai installato lo script? Lo hai gia' fatto o devi anche scriverlo?

Considera che hai almeno due strade:

1) farlo girare ad intervalli regolari (cron)
2) farlo partire dopo il boot e lasciarlo girare come demone (in un loop infinito).

ZS ti permette di seguire entrambe le soluzione tramite interfaccia web. Se vai su system -> setup -> startup/cron hai un comodo editor che ti permette di installare lo script in maniera facile.

Nel caso tu debba anche creare lo script, dimmi esattamente cosa vuoi fare e cerco di aiutarti.
Top
Profilo Invia messaggio privato
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Mar Gen 19, 2010 11:29 am    Oggetto: Rispondi citando

in verità lo script lo devo fare. Speravo appunto in un aiuto.
In pratica vorrei che al down di una specifica porta ETH, venisse accesa la porta ppp0 con il comando

/root/kerbynet.cgi/scripts/net_updown IF,ppp0 true

se poi torna up allora la deve chiudere con

/root/kerbynet.cgi/scripts/net_updown IF,ppp0 false

è possibile?
Top
Profilo Invia messaggio privato
lorenzo



Registrato: 02/12/08 11:02
Messaggi: 81

MessaggioInviato: Mar Gen 19, 2010 12:09 pm    Oggetto: Rispondi citando

Ciao,

certo e' possibile:

Codice:

#!/bin/bash
monitor_interface=ETH00
# tempo di attesa espresso in secondi
waittime=10


main () {
while :
do
sleep $waittime
interface_status=`ethtool $monitor_interface |grep Link |sed 's/^.*: //'`
if [ $interface_status == "yes" ]; then
logger "Interface $monitor_interface UP"
/root/kerbynet.cgi/scripts/net_updown IF,ppp0 false
else
logger "Interface $monitor_interface DOWN"
/root/kerbynet.cgi/scripts/net_updown IF,ppp0 true
fi
done
}

main


Non l'ho provato ma dovrebbe funzionare. Controlla se la scheda di rete ETH00 e' UP o meno ogni 10 secondi, se e' UP lancia lo script che spegne il ppp0, altrimenti lo attiva.

Lorenzo

P.s. occhio perche' ho fatto un paio di correzioni
Top
Profilo Invia messaggio privato
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Mar Gen 19, 2010 12:24 pm    Oggetto: Rispondi citando

ammetto la mia ignoranza in linux , quindi sono a vostra disposizione per eventuali offese Sad !
Come faccio ad attivarlo?
lo salvo in un file e lo lancio sul post boot?
il file deve avere un'estensione specifica?
grazie
Top
Profilo Invia messaggio privato
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Mar Gen 19, 2010 3:58 pm    Oggetto: Rispondi citando

Ho capito come attivare il tutto , ho fatto delle modifiche al tuo script. Magari puoi darmi qualche consiglio. lo posto non appena finisco di testarlo.
grazie sei stato veramente molto gentile.
Top
Profilo Invia messaggio privato
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Mer Gen 20, 2010 5:20 pm    Oggetto: Rispondi citando

Questo è lo script che ho fatto.
Sicuramente ci sar√† un modo pi√Ļ semplice per fare le stesse cose, ma con i pochi comandi che conosco ho tirato fuori questo.
In pratica :
controlla se la ppp0 è up, se è up esce altrimenti
controlla Eth00, se è down attiva ppp0 ed esce, altrimenti
conrtolla eth01, se è down attiva ppp0

Successivamente vorrei mettere anche i comandi per far richiudere la ppp0 una volta che l'interfaccia ETHx down sia tornata up.
Ho fatto questo script per poter usare anche sim con piani tariffari non flat per i dati.

#!/bin/bash
logger -t ppp0_check "ppp0_check STARTED"
monitor_interface0=ETH00
monitor_interface1=ETH01
# tempo di attesa espresso in secondi
waittime=10
controllo=0

main ()
{
while [ $controllo -eq 0 ];
do
sleep $waittime
ppp0_state=pp0`ifconfig |grep pp0 |sed 's/^.*Point-to-Point //'`
#logger -t ppp0_check $ppp0_state
if [ $ppp0_state == "pp0" ]; then
#logger -t ppp0_check "ppp0 Down"
interface_status0=ping1`ping 151.1.1.1 -I $monitor_interface0 -c 1 |grep From |sed 's/^.*=1 Destination Host //'`
#logger -t ppp0_check $interface_status0
else
controllo=11
#logger -t ppp0_check "ppp0 UP - EXIT"
fi
while [ $controllo -eq 0 ];
do
if [ $interface_status0 == "ping1Unreachable" ]; then
/root/kerbynet.cgi/scripts/net_updown IF,ppp0 true
logger -t ppp0_check "ppp0 NOW UP -ETH00 down-"
else
interface_status1=ping2`ping 151.1.1.1 -I $monitor_interface1 -c 1 |grep From |sed 's/^.*=1 Destination Host //'`
#logger -t ppp0_check $interface_status1
fi
controllo=0
while [ $controllo -eq 0 ];
do
if [ $interface_status1 == "ping2Unreachable" ]; then
/root/kerbynet.cgi/scripts/net_updown IF,ppp0 true
logger -t ppp0_check "ppp0 NOW UP -ETH01 down-"
controllo=2
else
controllo=1
#logger -t ppp0_check "ppp0_check END"
fi
done
done
controllo=0
done
}
main
Top
Profilo Invia messaggio privato
lorenzo



Registrato: 02/12/08 11:02
Messaggi: 81

MessaggioInviato: Mer Gen 20, 2010 6:40 pm    Oggetto: Rispondi citando

Quindi hai deciso di lanciarlo ogni tot invece che farlo girare in loop? Smile Benissimo, credo possa essere utile anche ad altri utenti del forum. Ti consiglio di modificarlo e metterlo fra [ code][/code ] (senza gli spazi), per aumentarne la leggibilita'.

Ciao,
Lorenzo
Top
Profilo Invia messaggio privato
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Mer Gen 20, 2010 9:10 pm    Oggetto: Rispondi citando

Con l'ultimo controllo=0 riparte tutto. In verità rimane in memoria in loop.
Il problema che sto trovando a causa della mia ignoranza in linux , è arlo partire dal boot.
ho salvato il file in /Database/var/pppo_check.sh , manulamente lo attivo con & alla fine ... e tutto va bene. Se lo carico nel post boot di ZS , parte tutto ... tutto funziona, ma sul pc il boot non si chiude, rimane con post boot: Running ..... senza caricare il men√Ļ di ZS.
Come devo fare?
grazie
mirko

ecco il codice:
Codice:

#!/bin/bash
logger -t ppp0_check "ppp0_check STARTED"
monitor_interface0=ETH00
monitor_interface1=ETH01
# tempo di attesa espresso in secondi
waittime=10
controllo=0

main ()
{
while [ $controllo -eq 0 ];
do
sleep $waittime
ppp0_state=pp0`ifconfig |grep pp0 |sed 's/^.*Point-to-Point //'`
#logger -t ppp0_check $ppp0_state
if [ $ppp0_state == "pp0" ]; then
#logger -t ppp0_check "ppp0 Down"
interface_status0=ping1`ping 151.1.1.1 -I $monitor_interface0 -c 1 |grep From |sed 's/^.*=1 Destination Host //'`
#logger -t ppp0_check $interface_status0
else
controllo=11
#logger -t ppp0_check "ppp0 UP - EXIT"
fi
while [ $controllo -eq 0 ];
do
if [ $interface_status0 == "ping1Unreachable" ]; then
/root/kerbynet.cgi/scripts/net_updown IF,ppp0 true
logger -t ppp0_check "ppp0 NOW UP -ETH00 down-"
else
interface_status1=ping2`ping 151.1.1.1 -I $monitor_interface1 -c 1 |grep From |sed 's/^.*=1 Destination Host //'`
#logger -t ppp0_check $interface_status1
fi
controllo=0
while [ $controllo -eq 0 ];
do
if [ $interface_status1 == "ping2Unreachable" ]; then
/root/kerbynet.cgi/scripts/net_updown IF,ppp0 true
logger -t ppp0_check "ppp0 NOW UP -ETH01 down-"
controllo=2
else
controllo=1
#logger -t ppp0_check "ppp0_check END"
fi
done
done
controllo=0
done
}
main
Top
Profilo Invia messaggio privato
lorenzo



Registrato: 02/12/08 11:02
Messaggi: 81

MessaggioInviato: Ven Gen 22, 2010 9:49 am    Oggetto: Rispondi citando

Ciao,

richiamando in post-boot "/Database/var/pppo_check.sh &" non dovresti avere problemi.

Cosi' come hai fatto lanciando lo script da shell. In questo modo zs completerebbe correttamente il boot.
Top
Profilo Invia messaggio privato
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Gio Gen 28, 2010 12:13 am    Oggetto: Rispondi citando

Sto avendo dei problemi sul cron di questo script.
In pratica ho tolto il loop ed ho fatto un cron ogni minuto. Il problema è che quando lo script arriva al comando
/root/kerbynet.cgi/scripts/net_updown IF,ppp0 true
per accendere l'interfaccia umts ,in verità il comando non viene mandato al ppp0 (nel log del ppp0 infatti non ci sono azioni), quindi ovviamente l'umts non si accende.
Questo accade SOLO se lo script parte da crontab, se lo faccio partire manualmente funziona perfettamente.
Ho provato sia con la & alla fine che senza .. ma è lo stesso.
sapete aiutarmi?
Top
Profilo Invia messaggio privato
infor_mare



Registrato: 09/01/10 13:37
Messaggi: 24

MessaggioInviato: Mer Feb 03, 2010 11:04 pm    Oggetto: Rispondi citando

E' stato appena pubblicato il mio doc con la creazione dello script ed alcune spiegazioni. Lo script è molto diverso da quello presente nel topic. Grazie anche a lorenzo per il suo aiuto e per avermi aperto gli occhi su un mondo veramente interessante.

http://www.zeroshell.net/listing/3G-failover.pdf
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it