2010-03-28 9 views
2

Ma connexion est floconneuse, mais j'en ai une de sauvegarde. J'ai fait un script bash pour vérifier la connectivité et changer de connexion si l'actuel est mort. S'il vous plaît, aidez-moi à les améliorer.Création d'un script bash pour vérifier la connectivité et modifier la connexion si nécessaire. Aidez-moi à l'améliorer?

Les scripts fonctionnent presque, sauf pour ne pas avoir attendu assez longtemps pour recevoir une adresse IP (il passe trop vite à l'étape suivante de la boucle until). Ici va:

#!/bin/bash 
# Invoke this script with paths to your connection specific scripts, for example 
# ./gotnet.sh ./connection.sh ./connection2.sh 

until [ -z "$1" ] # Try different connections until we are online... 
    do 
    if eval "ping -c 1 google.com" 
    then 
     echo "we are online!" && break 
    else 
    $1  # Runs (next) connection-script. 
    echo 
    fi 
    shift 
    done 

    echo    # Extra line feed. 
exit 0 

Et voici un exemple des scripts esclaves:

#!/bin/bash 
ifconfig wlan0 down 
ifconfig wlan0 up 
iwconfig wlan0 key 1234567890 
iwconfig wlan0 essid example 
sleep 1 
dhclient -1 -nw wlan0 
sleep 3 
exit 0 

Répondre

0

Essayez d'utiliser ConnectTimeout $ {} délai d'attente quelque part.

2

Avez-vous essayé d'omettre l'option -nw de la commande dhclient?

En outre, supprimez le eval et les citations de votre if ils ne sont pas nécessaires. Faites comme ceci:

if ping -c 1 google.com > /dev/null 2>&1 
6

est ici une façon de le faire:

#!/bin/bash 
while true; do 
     if ! [ "`ping -c 1 google.com; echo $?`" ]; then #if ping exits nonzero... 
       ./connection_script1.sh #run the first script 
       sleep 10  #give it a few seconds to complete 
     fi 
     if ! [ "`ping -c 1 google.com; echo $?`" ]; then #if ping *still* exits nonzero... 
       ./connection_script2.sh #run the second script 
       sleep 10  #give it a few seconds to complete 
     fi 
     sleep 300 #check again in five minutes 
done 

Ajustez les temps de sommeil et le nombre de ping à votre convenance. Ce script sort ne vous donc plus susceptibles de vouloir l'exécuter avec la commande suivante:

./connection_daemon.sh 2> & 1>/dev/null & désavouer