Passage de variable en ssh

Résolu/Fermé
palaga - 22 avril 2009 à 17:13
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 - 14 mai 2009 à 18:52
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.

3 réponses

dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
22 avril 2009 à 17:30
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"
2
Merci beaucoup pour vos réponses !

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.
0
jfr1784 Messages postés 71 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 22 avril 2009 27
22 avril 2009 à 17:30
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
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
23 avril 2009 à 09:21
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
0
Merci pour l'explication.

A bientôt.
0
palaga > palaga
14 mai 2009 à 17:00
Juste pour corriger une connerie dite plus haut:
Pas besoin de tout mettre tout sur la meme ligne, il faut en fait utiliser les " " et non ' ':

login="toto"
ssh root@serveur2 'echo $login' MARCHE PAS

mais
login="toto"
ssh root@serveur2 "echo $login" MARCHE !
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619 > palaga
14 mai 2009 à 17:15
tu n'as rien compris, apprend avant de critiquer
0
palaga > dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024
14 mai 2009 à 18:06
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 ...
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619 > palaga
14 mai 2009 à 18:52
ah désolé !! j'ai mal lu !
0