Bonjour,
Je réalise un script pour changer la passerelle par defaut au niveau de mon serveur linux (iptables, squid, dansguardian)
Je dispose de 2 accès internet, le premier est mon serveur linux et le second est un routeur. mon but c’est que si le premier accès tombe en panne cela bascule sur les autres.
(Mes postes lan sont configurés pour utilisé la passerelle par défaut LINUX)
Voici mon script:
#!/bin/bash
Check_route_defaut=$(route | grep -cw "default 192.168.1.1")
echo etape1-check de la passerelle si 1 = passerelle 192.168.1.1==> $Check_route_defaut
if [ $Check_route_defaut == 1 ];then
echo "etape2- Si 1 (passerelle 192.168.1.1) check si connexion OK==> RAS ou non==>Changement de route"
Check_connexion_neuf=$(ls9box --ip 192.168.1.1 --status | grep -cw "Connexion Internet : up")
echo etape3-check la connexion neuf ==> $Check_connexion_neuf
if [ $Check_connexion_neuf == 1 ]; then
echo RAS
else
#Route add default gw 172.16.0.175
#/etc/init.d/networking restart
echo Bascule sur la connexion de secours
fi
else
echo etape4-Si passerelle <> de 192.168.1.1 cela signifie qu on n est sur la connexion de secour
Check_connexion_neuf=$(ls9box --ip 192.168.1.1 --status | grep -cw "Connexion Internet : up")
echo "etape5 On check si la connexion neuf est revenue, si oui on rebascule sur la connexion neuf si non on reste sur celle de secour" ==>$Check_connexion_neuf
if [ $Check_connexion_neuf == 1 ]; then
#Route add default gw 192.168.1.1
#/etc/init.d/networking restart
echo bascule sur la connexion neuf
else
echo reste sur la connexion de secours
fi
fi
echo "poursuite ..."
Est-ce que mon script est correcte par rapport a mon explication? Y-a-t- il des erreurs?
Merci
guigui69
<> : différent de en C mais en bash 
EDIT :
tes ‘else’ n’ont aucune efficacité, sinon mettre un message, non ?
Oui les else sont la pour afficher uniquement des messages (c’est pour les tests)
Quel est le problème?
guigui69
Dans cette ligne :
il manque alors des “”, pour plus de clarté car on ne comprend pas bien que c’est un message à afficher, toute cette ligne.
De manière un peu plus basique ça active aussi la coloration syntaxique 
D’accord je corrige ca, sinon mon script est-il bon pour réalise se que je veut faire?
Je suis assez embêté j’aurais aimé trouvé une solution avec des bouléens de partout mais non le shell est trop limité pour ça il semble. Donc j’aurais juste une remarque sur la forme du code :
[code]#!/bin/bash
Check_route_defaut=$(route | grep -qw ‘default 192.168.1.1’ && true || false)
Check_connexion_neuf=$(ls9box --ip 192.168.1.1 --status | grep -qw ‘Connexion Internet : up’)
if [ $Check_route_defaut == 1 && $Check_connexion_neuf == 0 ]; then
# On bascule sur la connexion de secours
elif [ $Check_connexion_neuf == 1 ];
# On bascule sur la connexion neuf
fi
echo “poursuite …”[/code]
Je trouve ça plus clair car on vois directement les deux cas qui entrainent un traitement. On voit en haut les deux tests exécutés, ils sont pas dupliqué dans le code. Vraiment dommage pour les booléens mais je vai regarder de plus près. 
Merci pour ta réponse.
on ma proposer ceci comme script:
#!/bin/bash
addRoute() {
route add default gw $1
}
delRoute() {
route del default gw $1
}
defAddr="192.168.1.1"
resAddr="172.16.0.175"
Status=$(ls9box --ip $defAddr --status |grep -cw -- "- Connexion Internet : up")
Route=$(route |grep -cw "default *192\.168\.1\.1")
case $((Route + Status))
in
0)
echo 1
delRoute $defAddr
addRoute $resAddr
;;
1) case $Route
in
0)
echo 2
delRoute $resAddr
addRoute $defAddr
;;
1)
echo 3
delRoute $defAddr
addRoute $resAddr
;;
esac
;;
2)
echo 4
delRoute $resAddr
addRoute $defAddr
;;
esac
Qu’en pensez-vous?
guigui69
Bonjour à tous,
Je revient (j’étais en vacance
) et pour finir je voudrait que se script s’exécuter en tant que service.
Le but c’est qu’il exécute tout les XX minutes ce script, avant de partir j’avais trouvé de l’aide sur google, mais la impossible de remettre la main sur ces liens.
Quelqu’un pourrait-il m’éclairer sur la démarche à suivre?
Merci
guigui69
Imaginons que ton script se trouve dans /root/scripts/gw_change.sh
Ta crontab s’ouvre dans un editeur vi, il reste plus qu’à rajouter la ligne :
Et ton script se lancera tous les 1/4h. Change 15 par le nombre de minutes que tu veux…
merci pour votre aide.
comment on utilise crontab -e car je rentre dedans je rajoute ma ligne, mais je n’arrive pas a enregistrer.
A chaque fois que je retourne dedans la ligne que j’ai ajouté n’y est plus.
c’est bon je suis arrivé a enregistrer.
Je test ca.
guigui69