από medigeek » 13 Ιαν 2013, 14:41
Σεναριο #1:Πες πως το script είναι το /home/pi/connectme.sh
-
Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#!/bin/bash
function isonline {
ping -q -c1 http://www.google.com > /dev/null
if [[ "x0" == "x$?" ]]; then
return 0 #All ok, we have internet
else
return 1 #Error, no internet
fi
}
reconnect=0
while true; do
echo "Begin online check"
if [[ $reconnect == 0 ]]; then
echo "Trying to reconnect"
killall -9 -r sakis3g
sleep 5
/home/pi/sakis3g connect USBINTERFACE=0 APN=gint.b-online.gr
fi
sleep 60
if [[ isonline ]]; then
reconnect=1 #Do not attempt to reconnect
echo "All OK, connection established"
else
reconnect=0 #Try to reconnect
echo "Error while establishing connection, retrying"
fi
done
Το βάζεις να εκτελεστεί στο αρχείο /etc/crontab μια φορά κατά το boot:
- Κώδικας: Επιλογή όλων
@reboot /home/pi/connectme.sh
Δεν χρειάζεται sudo μιας και το /etc/crontab είναι ήδη root.
Σενάριο #2:Δημιουργούμε και αφαιρούμε αρχείο για να ελεγξουμε αν θα εκτελεστεί το sakis3g:
-
Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#!/bin/bash
function isonline {
ping -q -c1 http://www.google.com > /dev/null
if [[ "x0" == "x$?" ]]; then
return 0 #All ok, we have internet
else
return 1 #Error, no internet
fi
}
echo "Attempting to connect online"
if [[ ! -e /home/pi/reconnectme ]]; then
#/home/pi/reconnectme does not exist = attempt to reconnect
echo "Trying to reconnect"
killall -9 -r sakis3g
sleep 5
/home/pi/sakis3g connect USBINTERFACE=0 APN=gint.b-online.gr
fi
sleep 60
if [[ isonline ]]; then
echo "All OK, connection established"
touch /home/pi/reconnectme #Create file = do not attempt to reconnect
else
#Try to reconnect = remove /home/pi/reconnectme
echo "Error while establishing connection, retrying"
rm -f /home/pi/reconnectme
fi
Αν υπάρχει το αρχείο /home/pi/reconnectme δεν θα εκτελεσει το sakis3g.
Στο /etc/crontab για να εκτελεί κάθε 2 λεπτά το script:
- Κώδικας: Επιλογή όλων
*/2 * * * * /home/pi/connectme.sh
Συνολικά ίσως χρειαστεί 4-6 λεπτά (μια φορά κάνει έλεγχο και τη δευτερη φορά εκτελεί το sakis3g).
Σημειώσεις:* Και στα δύο σενάρια χρειάζεται το script να γίνει εκτελέσιμο:
- Κώδικας: Επιλογή όλων
sudo chmod +x /home/pi/connectme.sh
* Μπορείς να δοκιμάσεις το script με την εντολή:
- Κώδικας: Επιλογή όλων
sudo /home/pi/connectme.sh
Τελευταία επεξεργασία από
medigeek και 15 Ιαν 2013, 09:40, έχει επεξεργασθεί 1 φορά/ες συνολικά