[ssh sous linux] éxecuter ssh avec variable
Résolu
marco.marco
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
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 à tous !
Je voudrais éxecuter une commande, disons un simple "ls -rtl", soit en local sur mon serveur linux, soit sur un autre serveur distant via une commande ssh.
Et pour éviter de créer deux fois la commande dans mes shells, j'ai tout mis sous forme de variables :
si Serveur_local
distant1=""
distant2=""
si Serveur_distant1
distant1="ssh ${lib_ens2}-bkp \""
distant2="\""
d'où la commande :
${distant1}ls -rtl ${distant2}
ce qui donne soit:
ls -rtl
soit
ssh serveur_distant1 "ls -rtl"
en local car marche impec' mais si je charge les variable de sites distant j'ai ca :
bash: ls -rtl: command not found
par contre, si je tape cette meme commande sans variable ca marche:
ssh serveur_distant1 "ls -rtl"
drwxr-xr-x 2 root root 4096 aoû 19 2009 Desktop
pour etre sur je fais un echo de toute la commande avec variable :
echo "${distant1}ls -rtl${distant2}"
ssh serveur_distant1 "ls -rtl"
Je ne comprends pas trop pourquoi ca ne marche pas.
Quelqu'un pourrait m'aider svp ?
Merci !!!
Je voudrais éxecuter une commande, disons un simple "ls -rtl", soit en local sur mon serveur linux, soit sur un autre serveur distant via une commande ssh.
Et pour éviter de créer deux fois la commande dans mes shells, j'ai tout mis sous forme de variables :
si Serveur_local
distant1=""
distant2=""
si Serveur_distant1
distant1="ssh ${lib_ens2}-bkp \""
distant2="\""
d'où la commande :
${distant1}ls -rtl ${distant2}
ce qui donne soit:
ls -rtl
soit
ssh serveur_distant1 "ls -rtl"
en local car marche impec' mais si je charge les variable de sites distant j'ai ca :
bash: ls -rtl: command not found
par contre, si je tape cette meme commande sans variable ca marche:
ssh serveur_distant1 "ls -rtl"
drwxr-xr-x 2 root root 4096 aoû 19 2009 Desktop
pour etre sur je fais un echo de toute la commande avec variable :
echo "${distant1}ls -rtl${distant2}"
ssh serveur_distant1 "ls -rtl"
Je ne comprends pas trop pourquoi ca ne marche pas.
Quelqu'un pourrait m'aider svp ?
Merci !!!
A voir également:
- [ssh sous linux] éxecuter ssh avec variable
- Ssh download - Télécharger - Divers Web & Internet
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- Backtrack linux - Télécharger - Sécurité
- R-linux - Télécharger - Sauvegarde
5 réponses
Salut,
distant2="\""
C'est quoi ça ??? Une double quote ?
$ man woman
Il n'y a pas de page de manuel pour woman.
distant2="\""
C'est quoi ça ??? Une double quote ?
$ man woman
Il n'y a pas de page de manuel pour woman.
Hello jipicy,
Oui, pour terminer mon ssh. je suis obligé de la variabiliser cette double cote sinon, si je lance la commande sur mon serveur local, donc sans le ssh, il se retrouverait avec une " orpheline à la fin de cette commande.
J'ai continué un peu mes tests entre temps et en faisant un simple ls sans option:
${distant1} ls ${distant2}
ca passe !
C'est donc le tiret avec les options derrières qu'il n'aime pas.
J'ai essayé ${distant1} ls \-rtl ${distant2}, soit avec un anti-slash avant le tiret mais le résultat est le meme :
bash: ls -rtl: command not found
Le problème c'est que les commandes que je dois lancer en contiennent tout plein...
Je sèche...
Oui, pour terminer mon ssh. je suis obligé de la variabiliser cette double cote sinon, si je lance la commande sur mon serveur local, donc sans le ssh, il se retrouverait avec une " orpheline à la fin de cette commande.
J'ai continué un peu mes tests entre temps et en faisant un simple ls sans option:
${distant1} ls ${distant2}
ca passe !
C'est donc le tiret avec les options derrières qu'il n'aime pas.
J'ai essayé ${distant1} ls \-rtl ${distant2}, soit avec un anti-slash avant le tiret mais le résultat est le meme :
bash: ls -rtl: command not found
Le problème c'est que les commandes que je dois lancer en contiennent tout plein...
Je sèche...
Ca passe !!!!
Effectivement je me compliquais un peu la vie...
En fait le ${distant1} 'ls -rtl' passe très bien mais les veritables commandes elles ne me ramenaient rien (sans générer une erreur non plus).
Mais en faisant un ${distant1} "commande" (donc une double cote au lieu d'une simple), là plus aucun problème !
Merci pour tout Jipicy !
Effectivement je me compliquais un peu la vie...
En fait le ${distant1} 'ls -rtl' passe très bien mais les veritables commandes elles ne me ramenaient rien (sans générer une erreur non plus).
Mais en faisant un ${distant1} "commande" (donc une double cote au lieu d'une simple), là plus aucun problème !
Merci pour tout Jipicy !
En fait non, j'ai été un peu trop optimiste...
Ca passe bien sur serveur distant mais du coup c'est en local que ca ne passe plus...
distant1=""
${distant1} 'ls -rtl'
-bash: ls -rtl: command not found
:`-(
Bon tant pis ce n'est pas bien grave, je vais juste tester avant sur quel serveur je lance ma commande et créer le double de la commande, avec un ssh avant ou non.
En tout cas encore merci, c'est sympa d'avoir répondu :-)
Ca passe bien sur serveur distant mais du coup c'est en local que ca ne passe plus...
distant1=""
${distant1} 'ls -rtl'
-bash: ls -rtl: command not found
:`-(
Bon tant pis ce n'est pas bien grave, je vais juste tester avant sur quel serveur je lance ma commande et créer le double de la commande, avec un ssh avant ou non.
En tout cas encore merci, c'est sympa d'avoir répondu :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ou définir distant1="eval" : $distant1 'ls -l' ou $distant1 "ls -l" fonctionnent
$ cd /etc $ distant1="eval" $ distant1 'ls -l' | head -3 total 1528 drwxr-xr-x 8 root root 4096 2009-05-08 08:51 acpi -rw-r--r-- 1 root root 2986 2009-04-20 16:28 adduser.conf $ $ distant1 "ls -l" | head -3 total 1528 drwxr-xr-x 8 root root 4096 2009-05-08 08:51 acpi -rw-r--r-- 1 root root 2986 2009-04-20 16:28 adduser.conf $