J'ai fait un script bash qui se veut tester l'état de différents services.
declare -a Status
for srvc in "${Services[@]}"
do
Status["$srvc"]=`systemctl is-active "$srvc"`
if [ ${Status["$srvc"]} == "active" ]
then
echo "OK"
else
echo "KO"
fi
done
Le script fonctionne bien si la réponse d'un service est "active" mais il se plante sur la ligne
Status["$srvc"]=`systemctl is-active "$srvc"`
si le service est "inactive". C'est à dire que le script s'arrête sans aller à l'instruction suivante (j'ai tester en plaçant un simple echo derrière).
Si je fais la même commande non pas dans un script mais en ligne de commande alors la réponse est correcte.
Si quelqu'un peut m'expliquer pourquoi le script s'arrête et éventuellement ce qu'il faudrait faire.
parce qu'il y a un set -e, ou équivalent en début de script (bash -e) positionné, ce qui [t]ermine immédiatement si une commande s'arrête avec un code de retour non nul.
??
- Edité par dantonq 12 septembre 2019 à 19:42:59
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Le script fait presque 500 lignes et j'avais complètement zappé l'instruction en début de script.
Je passe en résolu.
Bye
- Edité par monkey3d 12 septembre 2019 à 20:18:20
Bash script test état d'un service
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique