Passage de variable en ssh
Résolu
palaga
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un souci avec script bash lorsque je veux exécuter des commandes sur un poste distant:
Ma variable $login n'est pas connue lorsque je lance des commandes pour le serveur nommé serveur2 en ssh:
login="toto"
ssh root@serveur2 'echo $login'
Même avec un export login rien n'y fait.
Donc j'aurai voulu savoir si une variable peut être passé en paramètre quelque part ou pas.
Merci d'avance pour vos suggestions, cela m'évitera de redemander le login avant chaque ssh ...
A+
Nico.
J'ai un souci avec script bash lorsque je veux exécuter des commandes sur un poste distant:
Ma variable $login n'est pas connue lorsque je lance des commandes pour le serveur nommé serveur2 en ssh:
login="toto"
ssh root@serveur2 'echo $login'
Même avec un export login rien n'y fait.
Donc j'aurai voulu savoir si une variable peut être passé en paramètre quelque part ou pas.
Merci d'avance pour vos suggestions, cela m'évitera de redemander le login avant chaque ssh ...
A+
Nico.
A voir également:
- Ssh variable
- Ssh download - Télécharger - Divers Web & Internet
- Vba range avec variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
3 réponses
hello
ssh root@serveur2 'login="toto" ; echo $login'
ou
login="toto" ; ssh root@serveur2 "echo $login"
ou
login="toto" ; ssh root@serveur2 "login2=$login ; echo \$login2"
ssh root@serveur2 'login="toto" ; echo $login'
ou
login="toto" ; ssh root@serveur2 "echo $login"
ou
login="toto" ; ssh root@serveur2 "login2=$login ; echo \$login2"
Hello palaga
login="toto"
ssh root@serveur2 touch $login
ceci créé le fichier toto sur le serveur2 dans le répertoire de root. Il ne faut pas mettre d'apostrophes et je ne crois pas que la commande echo n'ai d'effet sur une machine distante ( ceci est par contre à vérifier )
Bonne fin de journée.
JF
login="toto"
ssh root@serveur2 touch $login
ceci créé le fichier toto sur le serveur2 dans le répertoire de root. Il ne faut pas mettre d'apostrophes et je ne crois pas que la commande echo n'ai d'effet sur une machine distante ( ceci est par contre à vérifier )
Bonne fin de journée.
JF
entre guillemets " le shell traite le $ et substitue la variable. Avec le \$ ce n'est pas le shell exécutant le ssh, mais le shell distant qui va exécuter la substitution de $login2, puisque login2 n'existe que dans l'environnement du shell distant
Lol, elle est pas mal celle-là !
Je me critiquais tout seul, car la connerie venait de moi. Alors ne le prends pas mal car je n'ai jamais dis que ton 2e exemple n'étais pas bon, c'est juste que je corrigeais mon erreur.
J'avais refais quelques tests avant de poster alors ça doit être mon bash qui n'a rien compris ...
Je me critiquais tout seul, car la connerie venait de moi. Alors ne le prends pas mal car je n'ai jamais dis que ton 2e exemple n'étais pas bon, c'est juste que je corrigeais mon erreur.
J'avais refais quelques tests avant de poster alors ça doit être mon bash qui n'a rien compris ...
jfr1784: je ne veux pas créer une variable mais récupérer la valeur de la var. $login pour l'utiliser dans le code qui sera exécuter sur serveur2.
dubcek: t'es le meilleur !
Les 2 derniers exemples fonctionnent très bien.
Il faut donc récupérer la valeur de la variable sur la même ligne où on se connecte via ssh !
Pour le dernier exemple où on récupère la valeur dans une nouvelle variable, peux-tu me dire pourquoi le "\" est-il nécessaire ?
Encore merci.