lundi 17 juin 2013

Script Linux pour s'assurer de la connectivité

Aujourd'hui, un petit script pour s'assurer de la connectivité IPv4 et IPv6 sur une interface qui ne récupère pas toujours ses adresses (vivent le wifi, une ipw2200).

On ecrit le script qui fait le check :
[root@Virgo ~]# cat /etc/perso-wifi.sh
#!/bin/bash

INTF=wlp1s5

IP4=$(ip addr show dev $INTF scope global primary | grep -c "inet ")
IP6=$(ip addr show dev $INTF scope global primary | grep -c "inet6 ")

echo "IPv4 : $IP4 / IPv6 : $IP6"
if [ "$IP4" -lt "1" -o "$IP6" -lt "1" ]; then
  nohup systemctl restart netctl-auto@$INTF.service >/dev/null 2>&1 &
fi

Il regarde les adresses de connectivité globale et primaire (il peut y en avoir plusieurs, surtout en IPv6 si use_tempaddr est utilisé, dans mon cas je veux que l'adresse principale soit présente) et compte leur nombre pour IPv4 et IPv6. Si il n'y en a pas pour une des connectivité, il y a un problème et le script demande au système de relancer la connexion sur cette interface (en fond de tache pour ne pas garder le la tache cron et sans interruption quand le cron quitte).

On active ensuite le service de cron :

systemctl enable cronie.service
systemctl start cronie.service

Puis on y ajoute le script créé qui sera exécuté toutes les 5 minutes :

[root@Virgo ~]# crontab -l
*/5 * * * * /etc/perso-wifi.sh

Et voila, la machine est normalement joignable sur ses 2 connexions même en cas d'échec.
Notez que je ne vérifie pas qu'internet est joignable (inutile de relancer la connexion si c'est la box qui fail) ni si la box est joignable (idem), juste qu'on nous a bien donné des adresses, ce qui n'est pas toujours le cas au reboot (wpa_supplicant se rate souvent), et qui fait perdre la main.

Aucun commentaire:

Enregistrer un commentaire