Newsgroup: it.comp.os.linux.sys
Titolo: script per riconnettersi automaticamente alla vpn

Ciao, in ufficio ho problemi di connessione vpn ppp, tende a scollegarsi 
parecchio purtroppo, allora ho provato a modificare uno script per 
collegarmi automaticamente in caso di disconnessione mettendolo in crontab:
* * * * * /bin/bash /root/check_vpn.sh >> /root/sonodisperato
#!/bin/bash
check=`cat /proc/net/dev | grep ppp | wc -l | awk '{ print $1 }'`
if [ "$check" == "0" ]
then
        echo "VPN is dead! Trying to reconnect..."
        # Kill off all stale processes of pppd and pptp
        killall -9 pppd
        killall -9 pptp
        # Make sure they're dead by killing them again
        killall -9 pppd
        killall -9 pptp
        # Make the connection
        echo "ko `date "+%c"`";
        sleep 5
        echo "attivo vpn"
        /usr/sbin/pppd debug call hardcandy
        echo "vpn attiva"
        /sbin/ifconfig | grep ppp0
        sleep  10
        echo "imposto routing"
        NET="
10.0.0.0/8
" # set me
        IFACE="ppp0" # set me
        #IFACE=$1
        /sbin/route add -net ${NET} dev ${IFACE}
        /sbin/ifconfig ${IFACE} mtu  1000
        echo "fatto"
else
        echo "ok `date "+%c"`";
fi
ora, io sto impazzendo perché se lancio da shell lo script si collega 
allegramente, mentre se viene lanciato in crontab prova a fare la trafila ma 
si pianta:
Jan 13 13:43:06 sathio pppd[3417]: Script pptp hardcandy --nolaunchpppd 
finished (pid 3418), status = 0x7f           
questo status non mi dice molto, tutto quello che trovo su google è in 
russo.
non ho assolutamente idea di cosa possa essere andato storto azzarderei un 
problema di variabili d'ambiente, ma non so proprio chi/cosa, grazie per 
eventuali aiuti.
-- 
give it away

 un cretino ha scritto:
"Il microkernel e' morto da molto tempo ed ancora non lo sa." (cit. Bluff)

 una finché non trovi quella che ha causato il problema.
ho provato a impostare tutte le variabili di env, ma niente fortuna al 
momento.
uff
-- 
give it away

 momento.
Aggiungi un set -x ad inizio script e poi posta l'output di sonodisperato
* * * * * /bin/bash /root/check_vpn.sh >> /root/sonodisperato
Altra cosa ma che è solo questione di stile: se lo script è eseguibile non 
serve che specifichi la shell nel comando a cronab dato che già la 
specifichi ad inizio script.


 
d'accordo, domani proverò, grazie mille.

> Aggiungi un set -x ad inizio script e poi posta l'output di sonodisperato
questo è il risultato se invocato da shell:
root@sathio:~# ./check_vpn.sh 
++ cat /proc/net/dev          
++ grep ppp                   
++ wc -l                      
++ awk '{ print $1 }'         
+ check=0                     
+ '[' 0 == 0 ']'              
+ echo 'VPN is dead! Trying to reconnect...'
VPN is dead! Trying to reconnect...
+ killall -9 pppd
pppd: no process found
+ killall -9 pptp
pptp: no process found
+ killall -9 pppd
pppd: no process found
+ killall -9 pptp
pptp: no process found
++ date +%c
+ echo 'ko Fri 15 Jan 2010 11:01:33 AM CET'
ko Fri 15 Jan 2010 11:01:33 AM CET
+ /etc/init.d/networking stop
 * Deconfiguring network interfaces...                                                                                                                                                        
[ OK ]
+ /etc/init.d/networking stop
 * Deconfiguring network interfaces...                                                                                                                                                        
[ OK ]
+ /etc/init.d/networking start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service networking start
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start networking
networking stop/waiting
+ sleep 5
+ echo 'attivo vpn'
attivo vpn
+ /usr/sbin/pppd debug call hardcandy
+ echo 'vpn attiva'
vpn attiva
+ /sbin/ifconfig
+ grep ppp0
+ sleep 10
+ echo 'imposto routing'
imposto routing
+ NET=
10.0.0.0/8
+ IFACE=ppp0
+ /sbin/route add -net 
10.0.0.0/8
 dev ppp0
+ /sbin/ifconfig ppp0 mtu 1000
+ echo fatto
fatto
questo invece è quel che avviene in crontab:
VPN is dead! Trying to reconnect...
ko Fri Jan 15 11:03:01 2010
 * Deconfiguring network interfaces...
   ...done.
 * Deconfiguring network interfaces...
   ...done.
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service networking start
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start networking
networking stop/waiting
attivo vpn
vpn attiva
di seguito lo script così come è ora
#!/bin/bash                                                              
set -x
check=`cat /proc/net/dev | grep ppp | wc -l | awk '{ print $1 }'`
if [ "$check" == "0" ]                                           
then                                                             
        echo "VPN is dead! Trying to reconnect..."               
        # Kill off all stale processes of pppd and pptp
        killall -9 pppd
        killall -9 pptp
        # Make sure they're dead by killing them again
        killall -9 pppd
        killall -9 pptp
        # Make the connection
        echo "ko `date "+%c"`";
        /etc/init.d/networking stop
        /etc/init.d/networking stop
        /etc/init.d/networking start
        sleep 5
        echo "attivo vpn"
        /usr/sbin/pppd debug call hardcandy
        echo "vpn attiva"
        /sbin/ifconfig | grep ppp0
        sleep  10
        echo "imposto routing"
        NET="
10.0.0.0/8
" # set me
        IFACE="ppp0" # set me
        #IFACE=$1
        /sbin/route add -net ${NET} dev ${IFACE}
        /sbin/ifconfig ${IFACE} mtu  1000
        echo "fatto"
else
        echo "ok `date "+%c"`";
fi
e crontab -l
* * * * * /root/check_vpn.sh > /root/sonodisperato
sonodisperato!
-- 
give it away