VIVEZ LE
FOOTBALL !

Posez votre question Signaler

[SSH] : commande à distance [Résolu]

tlep 591Messages postés 21 février 2002Date d'inscription - Dernière réponse le 21 mai 2012 à 15:17
Bonjour,
Je souhaite effectuer des commandes complexes à distance, et çà ne fonctionne pas:
Exemple:
ssh root@192.168.xxx.xx "ls /home"
Ca marche :
awstat
billingbzh
billing_vm
conf
crm
etc...
Par contre:
ssh root@192.168.xxx.xx "for i in `ls /home`;do ls $i;done"
La j'obtiens des erreurs :
bash: -c: line 2: syntax error near unexpected token `conf'
bash: -c: line 2: `conf'
On ne peut pas exécuter des commandes complexes, ou des shells via ssh ?
Merci ;-)
Lire la suite 

[SSH] : commande à distance »

11 réponses
Réponse
+3
moins plus
Si je fais:
ssh root@192.168.203.33 'bash -c "for i in `ls /home`;do ls $i;done"'
bash: -c: line 2: syntax error near unexpected token `billingbzh'
bash: -c: line 2: `billingbzh'

Si je fais :
ssh root@192.168.203.33 "bash -c 'for i in `ls /home`;do ls $i;done'"
bash: -c: line 2: syntax error near unexpected token `conf'
bash: -c: line 2: `conf'

LOL :-))
Ajouter un commentaire
Réponse
+2
moins plus
Essaie en lançant tes commandes avec bash -c "commande1;commande2;etc"
Ajouter un commentaire
Réponse
+2
moins plus
Y'a du mieux il plante plus sur "conf" :

ssh root@192.168.xxx.xx bash -c "for i in `ls /home`;do ls $i;done"

ca me donne :

i: -c: line 1: syntax error near unexpected token `newline'
i: -c: line 1: `for'
bash: line 2: conf: command not found
bash: line 3: crm: command not found
bash: line 4: custuser: command not found
bash: line 5: log: command not found
bash: line 6: lost+found: command not found
bash: line 7: nttuser: command not found
bash: line 8: nusoap: command not found
bash: line 9: website: command not found
bash: -c: line 10: syntax error near unexpected token `do'
bash: -c: line 10: `ws;do ls ;done'
Ajouter un commentaire
Réponse
+2
moins plus
ssh root@192.168.xxx.xx 'bash -c "for i in `ls /home`;do ls $i;done"'

peut-être ?

(sinon il va probablement prendre -c et ce qui suit comme une option de ssh.
Ajouter un commentaire
Réponse
+2
moins plus
C'est juste un problème de ls :
ls $i ne fonctionne pas car tu ne te trouves pas dans le bon répertoire.
Il faut exécuter ls /home/$i !
Donc : ssh root@192.168.xxx.xx 'bash -c "for i in `ls /home`;do ls /home/$i;done"'
Ajouter un commentaire
Réponse
+2
moins plus
Salut,
ssh root@192.168.203.33 'bash -c "for name in /home/*; do ls "$name"; done;"'
;-))
tlep- 19 juil. 2007 à 16:16
Comment on peut intégrer un find avec ta méthode ?

for Filename in `find ...`;do echo $Filename;done

?
jipicy- 19 juil. 2007 à 18:41
Re-
ssh root@192.168.203.33 'bash -c "find /rep -name "fichier" -exec ls -l {} \;"'
;-))
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

merci çà marche !

Tu peux expliquer le mystère ?

-Est-ce que je peux exécuter un shell créé en local via ssh ?
Par exemple créer un script sur la machine A puis l'exécuter via ssh :

ssh root@B 'bash -c 'mon_script.sh' ?

Apparemment non puisque mon_script.sh se trouve sur A et va essayer de l'exécuter sur B ?
zipe31- 21 mai 2012 à 15:17
Si c'est possible :

ssh root@serveurB 'bash -s' ton_script.sh
Ajouter un commentaire
Réponse
+0
moins plus
Je fais d'abord un scp (secure copy) vers la machine et en suite je l'exécute via ssh. Cela fonctionne!

Par contre, il ne faut pas oublier être placé dans les bon répertoire où on a copié le fichier .sh
Ajouter un commentaire
Ce document intitulé « [SSH] : commande à distance » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?