J'ai trouvé des scripts qui disent qu'ils vérifient la connectivité Internet. Certains vérifient l'adresse IP si l'interface est en place MAIS elle ne vérifie pas la connectivité Internet. J'en ai trouvé qui utilisent ping comme ceci: if [ 'ping google.com -c 4 | grep time' != "" ]; then
mais parfois cela peut ne pas être fiable car le ping lui-même peut se bloquer pour une raison quelconque (par exemple, en attendant des E / S bloquées).
Avez-vous des suggestions sur la manière appropriée / fiable de vérifier la connectivité Internet à l'aide de scripts? Dois-je utiliser des packages?
Il doit être en mesure de vérifier périodiquement avec cron
par exemple, puis, faire quelque chose lorsque la connexion tombe en panne comme invoquerifup --force [interface]
$ ethtool <dev> | awk '$0 ~ /link detected/{print $3}'
>/dev/null
>/dev/null
redirige la sortie standard vers/dev/null
, le périphérique nul , qui en dispose car il n'est pas souhaité dans ce cas (tout ce qui nous intéresse est les valeurs de sortie des commandes). Au lieu de cela, une sortie plus applicable est tirée desecho
lignes.Je recommande fortement de ne pas l' utiliser
ping
pour déterminer la connectivité. Il y a trop d'administrateurs de réseau qui désactivent ICMP (le protocole qu'il utilise) en raison des inquiétudes liées aux attaques par inondation ping provenant de leurs réseaux.Au lieu de cela, j'utilise un test rapide d'un serveur fiable sur un port que vous pouvez vous attendre à ouvrir:
Cela utilise netcat (
nc
) dans son mode de balayage de port , un coup rapide (-z
est le mode zéro E / S [utilisé pour le balayage] ) avec un délai d'attente rapide (-w 1
attend au plus une seconde). Il vérifie Google sur le port 443 (HTTPS).J'ai utilisé HTTPS plutôt que HTTP pour me protéger contre les portails captifs et les proxys transparents qui peuvent répondre sur le port 80 (HTTP) pour tout hôte. Cela est moins probable lors de l'utilisation du port 443 car il y aurait une incompatibilité de certificat, mais cela se produit toujours.
Si vous souhaitez vous protéger contre cela, vous devrez valider la sécurité de la connexion:
Cela vérifie une connexion (plutôt que d'attendre qu'opssl expire), puis effectue la négociation SSL, en tapant sur la phase de vérification. Il se ferme silencieusement ("vrai") si la vérification était "OK" ou bien se termine avec une erreur ("faux"), alors nous rapportons la constatation.
la source
-d
par exemplenc -dzw1
aussi pour qu'il n'écoute pas STDIN et se bloque indéfiniment dans un script. et peut-être utiliser 8.8.8.8 au lieu de google.com pour enregistrer une recherche.nc -dzw1 8.8.8.8 443
-d
dans mes scripts, peut-être parce que je n'ai jamais eu de pipeline inutilisé. Cela devrait être sûr d'ajouter.-w 1
coûte toujours une seconde lorsqu'il n'y a pas de connectivité, bien que vousnc
ayez peut-être une sorte de problème obscur quelque part. Si vous avez une version récente de nmap installée, vous pouvez à la place fairencat --send-only --recv-only -w 334ms
pour réduire ce temps d'échec à un tiersnc
(j'ai trouvé que 334 ms est un bon temps d'attente).J'ai fait un script qui utilise plusieurs façons de vérifier la connexion Internet (ping, nc et curl, grâce à Adam Katz, Gilles et Archemar). J'espère que quelqu'un trouve cela utile. N'hésitez pas à le modifier à votre guise / à l'optimiser.
Vérifie votre passerelle, DNS et connexion Internet (en utilisant curl, nc et ping). Mettez-le dans un fichier puis rendez-le exécutable (généralement
sudo chmod +x filename
)la source
$GW
?/sbin/ip route | awk '/default/ { print $3 }'
obtient l'adresse de la passerelle depuis l'interface (espérons-le) principale. Si vous le souhaitez, vous pouvez définir vous-même l'adresse IP de la passerelle.il existe de nombreuses adresses IP sur Internet, une approche légère consiste à cingler certains d'entre eux
une réponse plus complète pourrait être d'obtenir des pages en utilisant
wget
où
la source
grâce à vos contributions de chaque utilisateur et autre web, j'ai réussi à terminer ce script en 3 jours. et je le laisserai libre pour son utilisation.
ce script automatise le renouvellement de l'adresse IP lorsque la connexion est perdue, il le fait de manière persistante.
pastebin: https://pastebin.com/wfSkpgKA
la source
eth0
, mais cela n'est pas mentionné.) (2) Utiliser l'anglais. (3) Mettre toutes les variables du shell (par exemple"$HOST"
,"$LINE1"
et"$LOG"
) entre guillemets. (4) RéglezLINE2
ou ne l'utilisez pas. (Je pense que vous avezLINE1
/LINE2
confondre avecinet4
/inet6
.) ... (suite)