Am scris un script watchdog care verifică dacă serverul VPN de pe mașina mea (care este accesibil prin internet) funcționează corect. Au apărut probleme aleatorii după rulări lungi care au necesitat o repornire.
Într-o buclă, gazda țintă este trimisă ping. După 20 de ping-uri nereușite, aparatul repornește.
Din păcate, gazda folosită pentru ping se rezolvă la un IP care este legat de interfață atinge 0
. RTT-urile sub o milisecundă indică faptul că niciun pachet nu a fost trimis prin internet, așa că ruta pe care o monitorizez este conectată la mașina locală. Aparatul este conectat la internet prin eth0
și poate fi ping de pe orice computer. Dar la utilizare ping -I eth0 <gazdă>
, tot ce primesc sunt timeout-uri.
traceroute
afișează traseul corect când se utilizează -i eth0
dar omiterea interfeței are ca rezultat o ieșire instantanee cu o linie, care indică direct către mașina mea (deoarece numele gazdei se rezolvă la adresa IP a atinge 0
).
Mai jos este scenariul meu (bine, acest lucru s-ar putea să nu ajute cu adevărat, dar pentru cei dintre voi care sunteți interesați, aruncați o privire la el):
#!/bin/bash
nereușit=0
în timp ce [ $nereușit -lt 20 ]; do
echo -n " ->"
ping -c 1 -W 2 <adresa serverului vpn> > /dev/null
dacă [ $? -ne 0]; atunci
((nereușit++))
echo "Nereușit: $nereușit"
altfel
nereușit=0
echo -n "<-"
fi
dormi 10
Terminat
ecou "La revedere"
reporniți