Script sh avec try et catch
Résolu/Fermé
Utilisateur anonyme
-
9 oct. 2020 à 10:57
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 14 oct. 2020 à 19:49
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 14 oct. 2020 à 19:49
3 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
9 oct. 2020 à 20:28
9 oct. 2020 à 20:28
Bonjour,
Tu peux juste vérifier le code de retour de la dernière commande
Bonne chance
Tu peux juste vérifier le code de retour de la dernière commande
apt(le code de la dernière commande shell lancé est stocké dans la variable
$?, et vaut
0si et seulement si tout s'est bien passé). En fonction de cette valeur, tu décides ou non ta boucle
while.
Bonne chance
Utilisateur anonyme
Modifié le 12 oct. 2020 à 10:54
Modifié le 12 oct. 2020 à 10:54
Bonjour @mamiemando et merci d'avoir répondu
Le problème c'est plutôt la commande ssh pas apt, donc je ne sais pas comment avoir le code d'erreur
Merci
Le problème c'est plutôt la commande ssh pas apt, donc je ne sais pas comment avoir le code d'erreur
Merci
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
Modifié le 13 oct. 2020 à 12:49
Modifié le 13 oct. 2020 à 12:49
Bonjour,
Quelques explications
La variable
Voici un exemple qui sera peut être plus parlant (en gras, c'est mon invite de commande, donc ça ne fait pas partie de la commande), dans lequel je déclenche des commandes via ssh vers ma propre machine (
Comme tu peux le voir, selon que la commande passé via
Script
Dans un script, voici à quoi ça peut ressembler (appelons disons
... ce qui donne :
Compléments
Pour éviter d'avoir à saisir le mot de passe à chaque fois, il est recommandé d'installer une clé ssh sur le compte cible (dans cet exemple,
Bonne chance
Quelques explications
La variable
$?
Voici un exemple qui sera peut être plus parlant (en gras, c'est mon invite de commande, donc ça ne fait pas partie de la commande), dans lequel je déclenche des commandes via ssh vers ma propre machine (
localhost) avec mon login (
mando) :
(mando@silk) (~) $ ssh mando@localhost touch /tmp/toto
mando@localhost's password:
(mando@silk) (~) $ echo $?
0
(mando@silk) (~) $ ssh mando@localhost touch /root/toto
mando@localhost's password:
touch: impossible de faire un touch '/root/toto': Permission non accordée
(mando@silk) (~) $ echo $?
1
Comme tu peux le voir, selon que la commande passé via
sshmarche ou non, le code de retour
$?vaut soit
0(si tout va bien), une autre valeur sinon. La valeur de retour correspond aux spécifications de la commande passée à
ssh(ici
touch, qui sert à créer un fichier vide). Les valeurs de retour sont spécifiées dans la documentation de la commande (ici, voir
man touchpour plus de détails).
Script
Dans un script, voici à quoi ça peut ressembler (appelons disons
toto.sh) :
#!/bin/sh for filename in /tmp/toto /root/toto do ssh mando@localhost touch $filename if [ $? -eq 0 ]; then echo "$filename :)" else echo "$filename :(" fi done exit 0
... ce qui donne :
(mando@silk) (~) $ chmod a+x toto.sh
(mando@silk) (~) $ ./toto.sh
mando@localhost's password:
/tmp/toto :)
mando@localhost's password:
touch: impossible de faire un touch '/root/toto': Permission non accordée
/root/toto :(
Compléments
Pour éviter d'avoir à saisir le mot de passe à chaque fois, il est recommandé d'installer une clé ssh sur le compte cible (dans cet exemple,
mando@localhoste.g. avec la commande
ssh-copy-id), et de lancer la commande
ssh-addavant de lancer le script
toto.sh. Pour plus de détails, je t'invite à regarder un tutoriel sur les clés ssh.
Bonne chance
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
>
Utilisateur anonyme
14 oct. 2020 à 19:49
14 oct. 2020 à 19:49
De rien et merci du compliment :-) Bonne continuation !