Bonjour à tous,
Je débute sous Linux et j'essaie de faire un petit script tout simple qui lorsque qu’il n’arrive pas à arrêter un service fait un forcestop en cas d’erreur.
Exemple.
.StopService
si erreur alors
.ForceStopService
Merci d’avance,
Bonjour à tous,
Je débute sous Linux et j'essaie de faire un petit script tout simple qui lorsque qu’il n’arrive pas à arrêter un service fait un forcestop en cas d’erreur.
Exemple.
.StopService
si erreur alors
.ForceStopService
Merci d’avance,
Bonjour
Pas facile de t'aider sans connaitre les commandes que tu utilises.
Ce qu'il faut savoir, c'est que tout programme Unix (quand il est correctement écrit), te renvoie un code d'état indiquant s'il a réussi (état=0) ou pas (état=nb > 0 et < 256) à exécuter la tâche demandée.
Et toi, tu peux alors tester ce code d'état pour agir en conséquence.
Ce code d'état est récupéré dans la variable "$?"
Exemple
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 rm -f /tmp if test $? -eq 0 then echo "Le dossier a bien été effacé" else echo "Le dossier n'a pas pu être effacé" fi
Le shell Unix étant relativement intelligent, il sait tester directement l'état d'un programme sans que tu aies spécifiquement besoin d'évaluer $?. Ca marche parce que, conventionnellement, un état à 0 signifie "vrai" et tout autre signifie "faux"
Exemple analogue
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if rm -f /tmp then echo "Le dossier a bien été effacé" else echo "Le dossier n'a pas pu être effacé" fi
Et ce code d'état est, bien entendu, indépendant de tout message d'erreur éventuel, que celui-ci soit affiché ou pas
Exemple
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if rm -f /tmp 2>/dev/null then echo "Le dossier a bien été effacé" else echo "Le dossier n'a pas pu être effacé" fi
Donc je ne connais pas trop ton ".StopService" et ".ForceStopService" mais si je reprends ton exemple, cela s'écrira alors ainsi
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 .StopService if test $? -ne 0 then .ForceStopService fi
Ou, plus simplement ainsi
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if ! .StopService then .ForceStopService fi
Ou, si t'es certain de n'avoir qu'une instruction à exécuter, tu pourras utiliser une autre écriture dédiée à ce genre de cas
Le "||" permettant de lier une seconde commande sur l'état de la première. Si la première renvoie un état "faux", alors le "||" embraye sur la seconde. Sinon il s'arrête. Cela symbolise d'ailleurs la connexion "or" ce qui se comprendra ainsi: exécuter la première commande ou bien alors exécuter la seconde.
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part .StopService || .ForceStopService
Et (pour info) t'as aussi le "&&" faisant la même chose mais embrayant, lui, la seconde commande sur un état "vrai" de la première (symbolisation de la connexion "and" => exécuter la première et la seconde)
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Bonjour,
J'ai pas lu mais je plussoie, rien que pour le temps passé à rédiger un tel message.
Merci à tous de vos réponses.
Je crois pouvoir m'en sortir.
Bonne journée et encore Merci.
Partager