J'ai un simple script bash qui exécute une série de contrôles ( ping
, nslookup
, etc.) et envoie ensuite un rapport d'email avec la sortie de ces données.
J'aimerais que l'e-mail contienne des informations sur la durée d'exécution de l'ensemble du script. Existe-t-il un moyen simple de collecter ces informations?
la source
$SECONDS
; c'est génial! Pour ajouter à cela, vous pouvez convertir les secondes en heures: minutes: secondes avec quelque chose commedate -d "1970-01-01 ${SECONDS} sec" +'%k:%M:%S'
(voirman date
pour plus d'options de formatage).SECONDS=0
sur un script et la même chose sur un autre script, vont-ils interférer les uns avec les autres?START_TIME=$SECONDS; dosomething; ELAPSED_TIME=$(($SECONDS - $START_TIME))
. Cela semble un peu plus flexible pour une utilisation simultanée.Préfixez votre commande avec
/usr/bin/time
et la commande time affichera le temps d'exécution du script. C'est plus portable que d'utiliser quelque chose debash
spécifique.la source
Lors de l'utilisation
SECONDS
ettime
vous donnera des valeurs relatives. Si vous souhaitez avoir des valeurs absolues à des fins d'audit et de rapport quant à la date d'exécution et à la fin du script, vous pouvez essayer quelque chose comme ceci avant et après vos commandesdate '+%Y%m%d%H%M%S.%N'
. Cela pourrait également vous donner une meilleure granularité car il peut capturer des différences deping
moins d'une seconde car vous avez des commandes comme celles qui s'exécutent normalement en une seconde.la source
Imbriquez votre script. Pour envoyer un e-mail, il existe plusieurs options. Personnellement, je préfère msmtp pour cela, vous pouvez définir les en-têtes vous-même "ici" style (en ligne) ou utiliser un fichier séparé et les regrouper. Il existe toutes sortes d'alternatives à cela impliquant perl, python, etc.
La ligne vierge de fin est importante. cat votre message assemblé dans msmtp ainsi:
Un pessimiste ferait une boucle jusqu'au succès un nombre raisonnable de fois.
La charge utile pourrait également être HTML, et pourrait être générée par PHP.
Une alternative très laide pour une opération "batch" pendant la nuit est de créer un cronjob et la sortie est envoyée par e-mail à la place de stdout / stderr.
la source