Écrivons un script de confirmation ping de manière appropriée

Écrivons un script de confirmation ping de manière appropriée

Exigences

Liste d'adresses IP cibles

Je vais le décrire comme suit.

192.168.11.21
192.168.11.29
192.168.11.69
192.168.11.88
192.168.11.99

Corps du script

Comme ça.

bash


#!/bin/bash
LANG=C;
export LANG;
:> ~/mail.dat;
while read line;do
  _RET_=`ping -c 5 -i 1 -w 10 -s 32 ${line} | grep 'loss' | grep -oP '[0-9]+%'`;
  echo "${line} ${_RET_} loss";
  [ "0%" == "${_RET_}" ] && continue;
  echo "${line} ${_RET_} loss" >> ~/mail.dat;
done <~/ip_node.list;
_RET_=`du ~/mail.dat | awk '{print $1}' | xargs expr`;
[ ! 0 -eq ${_RET_} ] && mail -s "IP packet loss alert." -r [from addr] [to addr] < ~/mail.dat;
exit 0;

Corps du script (avec commentaires)

bash


#!/bin/bash
LANG=C;
export LANG;   #Lorsque le résultat Ping est affiché en japonais, l'expression régulière de grep est gênante, donc LANG=Fixé à C

:> ~/mail.dat;   #Définissez le corps de la notification par e-mail sur 0 octet

while read line;do   #Entrez le fichier dans la partie terminée ci-dessous$Chaque ligne contient une variable

  _RET_=`ping -c 5 -i 1 -w 10 -s 32 ${line} | grep 'loss' | grep -oP '[0-9]+%'`;   #Exécutez Ping, ajustez les options, etc. à votre guise et obtenez la pièce correspondante avec gpre

  echo "${line} ${_RET_} loss";

  [ "0%" == "${_RET_}" ] && continue;   # 0%À part la notification, c'est bien

  echo "${line} ${_RET_} loss" >> ~/mail.dat;   #Ecrire pour notification

done <~/ip_node.list;

_RET_=`du ~/mail.dat | awk '{print $1}' | xargs expr`;   #Obtenez la taille du fichier pour notification

[ ! 0 -eq ${_RET_} ] && mail -s "IP packet loss alert." -r [from addr] [to addr] < ~/mail.dat;   #Si différent de zéro, notifier

exit 0;

Recommended Posts

Écrivons un script de confirmation ping de manière appropriée
Créer un script shell pour écrire un journal
Ecrire un script pour convertir un vidage MySQL en TSV
Essayez de sélectionner une langue
Je n'oublierai jamais comment écrire un script shell, n'oubliez pas! !!
Essayez de dessiner une courbe de Bézier
Écrire la sortie standard dans un fichier
Ecrire un script batch avec Python3.5 ~
Ecrire un programme qui abuse du programme et envoie 100 e-mails
Écrivez un script pour calculer la distance avec le système Elasticsearch 5 sans douleur
Faisons un noyau jupyter
[Ubuntu] Comment exécuter un script shell
Un simple script IDAPython pour nommer une fonction
J'ai fait un script pour afficher des pictogrammes
Script pour créer un fichier de dictionnaire Mac
Comment exécuter des scripts Maya Python
Essayez de dessiner une courbe de vie avec python
Pourquoi Python doit-il écrire un deux-points?
Comment écrire une instruction ShellScript Bash for
Essayez de créer une nouvelle commande sous Linux
J'ai écrit un script pour télécharger un plug-in WordPress
Comment écrire un document tuple nommé en 2020
[Go] Comment écrire ou appeler une fonction
Je veux écrire dans un fichier avec Python
Comment écrire une instruction de cas bash ShellScript
Essayez de créer un module Python en langage C
Faisons un outil de veille de commande avec python
Essayez de créer un Checkbutton dynamiquement avec Tkinter en Python
(Python) Essayez de développer une application Web en utilisant Django
Je veux écrire en Python! (2) Écrivons un test
J'ai fait un script pour mettre un extrait dans README.md
Comment écrire un type liste / dictionnaire de Python3
[Python] Comment écrire une docstring conforme à PEP8
Un échantillon pour essayer rapidement les machines de factorisation avec fastFM
[Python] Un mémo pour écrire du CSV verticalement avec Pandas
Les débutants en apprentissage automatique essaient de créer un arbre de décision
Comment créer un simple script serveur / client TCP
Écrire du code dans UnitTest une application Web Python
Générer un script bash pour ajouter les paramètres du moniteur Datadog