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

Signaler
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
-
Messages postés
36299
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
-
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 ;-)

8 réponses

Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
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 :-))
6
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
230
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
15 octobre 2007
144
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"'
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 857
Salut,
ssh root@192.168.203.33 'bash -c "for name in /home/*; do ls "$name"; done;"'
;-))
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
Comment on peut intégrer un find avec ta méthode ?

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

?
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 857
Re-
ssh root@192.168.203.33 'bash -c "find /rep -name "fichier" -exec ls -l {} \;"'
;-))
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 513
Essaie en lançant tes commandes avec bash -c "commande1;commande2;etc"
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
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'
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 513
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.
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
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 ?
Messages postés
36299
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 159
Si c'est possible :

ssh root@serveurB 'bash -s' ton_script.sh
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