Script connexion SSH un peu complexe
Fermé
JM
-
25 mai 2012 à 18:11
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 - 18 juin 2012 à 05:34
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 - 18 juin 2012 à 05:34
A voir également:
- Script connexion SSH un peu complexe
- Gmail connexion - Guide
- Script vidéo youtube - Guide
- Gmail connexion autre compte - Guide
- Connexion chromecast - Guide
- D'où peut venir un problème de connexion internet sur un ordinateur ? - Guide
6 réponses
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
30 mai 2012 à 11:04
30 mai 2012 à 11:04
hello
essayer
essayer
ssh host <<EOF >log 2>&1 $(seq -f "tuto%g" 1 50) EOF
jivef
Messages postés
927
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
12 novembre 2020
306
26 mai 2012 à 05:41
26 mai 2012 à 05:41
Bonjour,
- Première chose, tu utilises pour te connecter un mot de passe en clair...
Ce n'est pas propre.
Si tu le peux, privilégie une clé RSA...
- Tu veux une réaction précise en fonction du code retour de la commande précédente.
Et bien tu dois utiliser la commande "test" qui peut s'écrire "[ " en syntaxe simplifiée.
Le code retour de la commande précédente est toujours dans la variable $?
Par exemple :
$ls
000.sql 037.sql 074.sql 111.sql 148.sql 185.sql 222.sql
001.sql 038.sql 075.sql 112.sql 149.sql 186.sql 223.sql
002.sql 039.sql 076.sql 113.sql 150.sql 187.sql 224.sql
003.sql 040.sql 077.sql 114.sql 151.sql 188.sql 225.sql
$echo $?
0
Le code retour est ici 0.
Si je cherche un fichier inexistant voici ce que j'aurai :
$ ls toto
ls: impossible d'accéder à toto: No such file or directory
$ echo $?
2
Le code 0 signifie que la commande s'est bien passée, les autres indiquent une erreur quelle qu'elle soit.
A toi de voir quel code retourne ta commande.
Si c'est un script tu peux jouer sur les codes retour avec la commande exit suivi d'un numéro.
Ensuite, tu intégres le code retour dans un test conditionnel avec if.
if [ "$?" -eq "0" ]
then
echo "La commande a marche"
else
echo "la commande a grossierement foire"
fi
A bientôt.
Jonas.
- Première chose, tu utilises pour te connecter un mot de passe en clair...
Ce n'est pas propre.
Si tu le peux, privilégie une clé RSA...
- Tu veux une réaction précise en fonction du code retour de la commande précédente.
Et bien tu dois utiliser la commande "test" qui peut s'écrire "[ " en syntaxe simplifiée.
Le code retour de la commande précédente est toujours dans la variable $?
Par exemple :
$ls
000.sql 037.sql 074.sql 111.sql 148.sql 185.sql 222.sql
001.sql 038.sql 075.sql 112.sql 149.sql 186.sql 223.sql
002.sql 039.sql 076.sql 113.sql 150.sql 187.sql 224.sql
003.sql 040.sql 077.sql 114.sql 151.sql 188.sql 225.sql
$echo $?
0
Le code retour est ici 0.
Si je cherche un fichier inexistant voici ce que j'aurai :
$ ls toto
ls: impossible d'accéder à toto: No such file or directory
$ echo $?
2
Le code 0 signifie que la commande s'est bien passée, les autres indiquent une erreur quelle qu'elle soit.
A toi de voir quel code retourne ta commande.
Si c'est un script tu peux jouer sur les codes retour avec la commande exit suivi d'un numéro.
Ensuite, tu intégres le code retour dans un test conditionnel avec if.
if [ "$?" -eq "0" ]
then
echo "La commande a marche"
else
echo "la commande a grossierement foire"
fi
A bientôt.
Jonas.
Merci Jonas pour ton retour.
Je vais aller tester tout ça.
Est ce que tu connais une variable qui contient la chaine de caractère renvoyer par le serveur. C'est à dire dans ton exemple :
$ ls toto
ls: impossible d'accéder à toto: No such file or directory
avoir une variable qui contient "ls: impossible d'accéder à toto: No such file or directory"
Merci pour vos réponses !!
Je vais aller tester tout ça.
Est ce que tu connais une variable qui contient la chaine de caractère renvoyer par le serveur. C'est à dire dans ton exemple :
$ ls toto
ls: impossible d'accéder à toto: No such file or directory
avoir une variable qui contient "ls: impossible d'accéder à toto: No such file or directory"
Merci pour vos réponses !!
jivef
Messages postés
927
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
12 novembre 2020
306
26 mai 2012 à 21:55
26 mai 2012 à 21:55
Bonjour,
Tu ne m'as pas compris...
Tu n'as pas besoin de ça, tu as seulement besoin du code retour...
Un programme peut avoir différents codes retour alors que d'une version à l'autre le message d'erreur sera différent, les codes retours seront toujours les mêmes.
Celui qui indique la réussite complète est toujours 0, ensuite il y a des niveaux d'erreur.
Dans un script tu peux aussi jouer sur les niveaux d'erreur.
Ainsi, dans le cas de l'échec d'une fonction tu peux faire exit suvi d'un numéro entre 0 et 9.
Ensuite, tu récupère le code erreur de ton script.
Pour avoir les codes retour d'une commande, utilise le manuel.
Les codes retours sont détaillés.
A plus.
Tu ne m'as pas compris...
Tu n'as pas besoin de ça, tu as seulement besoin du code retour...
Un programme peut avoir différents codes retour alors que d'une version à l'autre le message d'erreur sera différent, les codes retours seront toujours les mêmes.
Celui qui indique la réussite complète est toujours 0, ensuite il y a des niveaux d'erreur.
Dans un script tu peux aussi jouer sur les niveaux d'erreur.
Ainsi, dans le cas de l'échec d'une fonction tu peux faire exit suvi d'un numéro entre 0 et 9.
Ensuite, tu récupère le code erreur de ton script.
Pour avoir les codes retour d'une commande, utilise le manuel.
Les codes retours sont détaillés.
A plus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Mais mon problème dans l'histoire c'est qu'une fois que mon script est lancé sur le serveur SSH distant, toutes les commandes que je vais rentrer sont exécutés sur le serveur distant.
Hors j'aimerais pouvoir lancer certaines commandes sur mon mac et d'autres sur le serveur distant et rapatrié ces réponses sur mon mac dans un fichier.
Exemple :
j'ai les commandes suivantes à éxécuter :
tutu1
tutu2
tutu3
...
tutu50
Au lieu de les taper une à une, j'aimerais avoir une boucle avec une variable allant de 1 à 50 qui permet de lancer successivement les différentes commandes. Et ce qui sera retourner par le serveur distant suite à la saisie de ces commandes doit pouvoir être enregistré sur mon mac (mon mac étant la machine depuis laquelle le script est lancé) dans un fichier texte.
Merci pour votre aide,
Bonne journée
Mais mon problème dans l'histoire c'est qu'une fois que mon script est lancé sur le serveur SSH distant, toutes les commandes que je vais rentrer sont exécutés sur le serveur distant.
Hors j'aimerais pouvoir lancer certaines commandes sur mon mac et d'autres sur le serveur distant et rapatrié ces réponses sur mon mac dans un fichier.
Exemple :
j'ai les commandes suivantes à éxécuter :
tutu1
tutu2
tutu3
...
tutu50
Au lieu de les taper une à une, j'aimerais avoir une boucle avec une variable allant de 1 à 50 qui permet de lancer successivement les différentes commandes. Et ce qui sera retourner par le serveur distant suite à la saisie de ces commandes doit pouvoir être enregistré sur mon mac (mon mac étant la machine depuis laquelle le script est lancé) dans un fichier texte.
Merci pour votre aide,
Bonne journée
jivef
Messages postés
927
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
12 novembre 2020
306
30 mai 2012 à 10:41
30 mai 2012 à 10:41
Bonjour,
Pour générer un suite de 1 à 50, utilise "seq"
$ seq 1 5
1
2
3
4
5
$
Imagine le résultat si tu utilises de 1 à 50.
Soit une commande tutu ayant 50 déclinaisons de tutu1 à tutu50 :
$for i in $(seq 1 50)
do
tutu$i
done
Si jamais tu as besoins de faire de tutu01 à tutu50, il suffit de rajouter l'option -w à la commande seq.
$ seq -w 1 10
01
02
03
04
05
06
07
08
09
10
Pour ce qui est de récupérer les fichiers sur ta machine, il faut qu'à la fin de ton script tu lances une commande scp qui va récupérer toutes les logs.
Je ne vois pas où est le problème.
Pour générer un suite de 1 à 50, utilise "seq"
$ seq 1 5
1
2
3
4
5
$
Imagine le résultat si tu utilises de 1 à 50.
Soit une commande tutu ayant 50 déclinaisons de tutu1 à tutu50 :
$for i in $(seq 1 50)
do
tutu$i
done
Si jamais tu as besoins de faire de tutu01 à tutu50, il suffit de rajouter l'option -w à la commande seq.
$ seq -w 1 10
01
02
03
04
05
06
07
08
09
10
Pour ce qui est de récupérer les fichiers sur ta machine, il faut qu'à la fin de ton script tu lances une commande scp qui va récupérer toutes les logs.
Je ne vois pas où est le problème.
Modifié par jivef le 18/06/2012 à 05:39
Peu courante mais très élégante.
Bravo. Je "plusse" ta réponse.
Je ne me souviens pas qu'on m'ait déjà parlé du double redirecteur en entrée.
Bien vu, j'ai encore appris un truc...
Merci dubcek.