La Fibre

Télécom => Réseau => reseau TCP/IP / Fonctionnement des réseaux => Discussion démarrée par: aljarreau le 08 juin 2018 à 20:55:41

Titre: demande aide création d'un script de surveillance pppoe
Posté par: aljarreau le 08 juin 2018 à 20:55:41
Bonjour,

Avec l'ERL, pour surveiller son ipsec et redemarrer son VPN en cas de besoin, un utilisateur utilise un cron toutes les x heures avec le script suivant :

#!/bin/bash
run=/opt/vyatta/bin/vyatta-op-cmd-wrapper
$run show vpn ipsec sa | grep "up"
if [ $? == 1 ]
then
 $run restart vpn
fi

Je souhaiterai pour ma part pouvoir créer le même script pour surveiller l'intégrité de ma connexion internet en cas de coupure et qu'elle ne se rétablisse pas correctement, je rencontre ce problème un jour sur deux.

J'ai donc pensé (rien que pensé car je ne m'y connais pas du tout en programmation) mettre en place un cron avec un script similaire qui ressemblerait à ceci :

#!/bin/bash
run=/opt/vyatta/bin/vyatta-op-cmd-wrapper
$run show interfaces pppoe sa | grep "up"
if [ $? == 1 ]
then
 $run clear interfaces connection pppoe0
fi

Sachant que la commande show de mon interface pppoe affiche ceci :

me@ubnt:~$ show interfaces pppoe
pppoe0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state
UNKNOWN group default qlen 100
    link/ppp
    inet 41.251.73.239 peer 41.251.72.1/32 scope global pppoe0
       valid_lft forever preferred_lft forever
    RX: bytes  packets  errors  dropped overrun mcast   
    688214     6068     0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns
    363767     5088     0       0       0       0       
                                                                                 
    RX:  bytes    packets     errors    dropped    overrun      mcast             
        688214       6068          0          0          0          0             
    TX:  bytes    packets     errors    dropped    carrier collisions             
        363767       5088          0          0          0          0     
Donc :
1/Est-ce que c'est bien l'interface pppoe qu'il faut surveiller, sinon quoi surveiller au cas où pppoe est UP mais que la connexion n'est pas établie? (par exemple avec une authentification que ne se fait pas ou que l'attribution de l'IP ne se fait pas correctement), dans mon cas précis ça coince toujours et systématiquement à ce niveau de la négociation :
Connect: ppp0 <--> eth0.881
sent [LCP ConfReq id=0x1 <mru 1492> <magic 0xd46e360e>]
rcvd [LCP ConfAck id=0x1 <mru 1492> <magic 0xd46e360e>]
rcvd [LCP ConfReq id=0x2 <mru 1492> <auth chap MD5> <magic 0xb206f5b2>]
lcp_reqci: returning CONFACK.
sent [LCP ConfAck id=0x2 <mru 1492> <auth chap MD5> <magic 0xb206f5b2>]
sent [LCP EchoReq id=0x0 magic=0xd46e360e]
rcvd [CHAP Challenge id=0x1 <1dd13d15cba3c39e49983b2d82f84af0>, name = "IPS Server Name"]
sent [CHAP Response id=0x1 <0c2d72d9726179d6751b4a52af1292ea>, name = "Hidden"]
rcvd [LCP ConfReq id=0x3 <mru 1492> <auth chap MD5> <magic 0xba4ca2e6>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
lcp_reqci: returning CONFACK.
sent [LCP ConfAck id=0x3 <mru 1492> <auth chap MD5> <magic 0xba4ca2e6>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
sent [LCP ConfReq id=0x2 <mru 1492> <magic 0xb85bb41e>]
.... et ça ne s'arrête plus


2/ S'il faut surveiller autre chose que l'interface pppoe, que faut-il modifier dans ce script pour qu'il marche?

Merci pour votre aide
Titre: [Résolu] demande aide création d'un script de surveillance pppoe
Posté par: aljarreau le 09 juin 2018 à 01:17:18
Je me réponds à moi-même au cas où ça pourrait servir

Voilà le script que j'ai créé dans un fichier cron-drop-pppoe.sh :
#!/bin/bash
run=/opt/vyatta/bin/vyatta-op-cmd-wrapper
$run show interfaces pppoe | grep "POINTOPOINT"

if [ $? == 1 ]

then

$run disconnect interface pppoe0

sleep 15

$run connect interface pppoe0

fi

Le "POINTOPOINT" je l'ai pris dans le résultat de la commande show de l'interface pppoe quand elle est connectée et active (autrement rien ne s'affiche).
J'ai ensuite  créé dans Task-Scheduler  une tâche qui surveille la connexion toutes le 2 minutes et qui agit en conséquence. Je teste depuis une heure toutes les situations et ça à l'air de bien marcher. Je peux retourner maintenant à une activité normale :)

ça m'évite de toucher aux fichiers où les réglages changeraient en cas de mise à jour mineure.