OVH Cloud OVH Cloud

Scripter SSH?

9 réponses
Avatar
Frédéric Gaudy
Bonjour,

Je voudrais exécuter des commandes sur un ordinateur distant en utilisant
ssh, mais le programme à faire tourner se trouve sur l'ordinateur appelant.

pour le moment je fais :

echo 'mkdir /home/$USER' | ssh lordinateur.a.controler.fr

y'a t'il plus simple comme mise en oeuvre?

9 réponses

Avatar
Hugues Hiegel
Ce cher Frédéric Gaudy a dit :

Bonjour,

Je voudrais exécuter des commandes sur un ordinateur distant en utilisant
ssh, mais le programme à faire tourner se trouve sur l'ordinateur appelant.

pour le moment je fais :

echo 'mkdir /home/$USER' | ssh lordinateur.a.controler.fr


OULAAAH !!!

y'a t'il plus simple comme mise en oeuvre?


Ben oui :-)

ssh lordinateur.a.controler.fr mkdir /home/$USER

man ssh :

*SYNOPSIS*
*ssh* [-l login_name] hostname | [command]
^^^^^^^

--
« La plus value latente d'une entreprise est toujours a priori
subordonnée aux moins-values éventuelles de la concurrence. »
- L'auberge espagnole -

Avatar
Michel Tatoute

pour le moment je fais :

echo 'mkdir /home/$USER' | ssh lordinateur.a.controler.fr


OULAAAH !!!


oui, bon, faut se calmer là. On crie pas sur le newbee, c'est pas poli.

Et pis on fait attention à ne pas lui envoyer des ######### bétises
quand on lui crie dessus, sinon c'est double dose de ######### bétises:


ssh lordinateur.a.controler.fr mkdir /home/$USER


c'est

$ ssh lordinateur.a.controler.fr 'mkdir /home/$USER'

la commande exacte, rapport à la variable $USER qui doit être
interprétée là bas.

Michel.


Avatar
Frédéric Gaudy
$ ssh lordinateur.a.controler.fr 'mkdir /home/$USER'


Cela peut être pratique pour exécuter une commande, mais si on veut
exécuter un script complet (avec if et while) dont les variables sont
intéprétés sur le poste de commande et les actions effectués sur le poste
contrôlé :

$ssh lordinateur.a.controler.fr 'if [ -t /home/$USER ]; then mkdir
/home/$USER; fi; ...'

là ça devient illisible...

Avatar
Hugues Hiegel
Ce cher "Michel Tatoute" a dit :


pour le moment je fais :

echo 'mkdir /home/$USER' | ssh lordinateur.a.controler.fr


OULAAAH !!!


oui, bon, faut se calmer là. On crie pas sur le newbee, c'est pas

poli.


Pardon, j'avais pas vu que c'etait un nioubi, je recommencerai plus, promis..

Et pis on fait attention à ne pas lui envoyer des ######### bétises
quand on lui crie dessus, sinon c'est double dose de ######### bétises:


J'ai pas ecrit de betises..

ssh lordinateur.a.controler.fr mkdir /home/$USER


c'est

$ ssh lordinateur.a.controler.fr 'mkdir /home/$USER'


oui exact sauf que si tu lis la commande, il ne precise pas de nom
d'utilisateur particulier, j'en deduis qu'il n'a pas de ca dans son
.ssh/config et que donc le nom d'user est le meme ici que la bas :-)

la commande exacte, rapport à la variable $USER qui doit être
interprétée là bas.


Non mais en fait tu as raison. completement.
Mais ca, c'etait a lui de le trouver, non ? ;-)

--
« La plus value latente d'une entreprise est toujours a priori
subordonnée aux moins-values éventuelles de la concurrence. »
- L'auberge espagnole -



Avatar
Hugues Hiegel
Ce cher Frédéric Gaudy a dit :

$ ssh lordinateur.a.controler.fr 'mkdir /home/$USER'


Cela peut être pratique pour exécuter une commande, mais si on veut
exécuter un script complet (avec if et while) dont les variables sont
intéprétés sur le poste de commande et les actions effectués sur le poste
contrôlé :

$ssh lordinateur.a.controler.fr 'if [ -t /home/$USER ]; then mkdir
/home/$USER; fi; ...'

là ça devient illisible...


Tu fais un ptit shellscript.sh, puis un scp ici:shellscript.sh
labas:. puis un ssh labas shellscript.sh

c'est pas compliqué de faire simple :-)
bon j'avoue que je ne trouve pas ca super propre mais c'est mieux que
rien..

--
« La plus value latente d'une entreprise est toujours a priori
subordonnée aux moins-values éventuelles de la concurrence. »
- L'auberge espagnole -


Avatar
Michel Tatoute

$ ssh lordinateur.a.controler.fr 'mkdir /home/$USER'


Cela peut être pratique pour exécuter une commande, mais si on veut
exécuter un script complet (avec if et while) dont les variables sont
intéprétés sur le poste de commande et les actions effectués sur le poste
contrôlé :

$ssh lordinateur.a.controler.fr 'if [ -t /home/$USER ]; then mkdir
/home/$USER; fi; ...'

là ça devient illisible...


exact.

essaie plutôt:

ssh -xT lordinateur.a.controler.fr <<EOSCRIPT
if [ -t /home/$USER ]
then
mkdir /home/$USER
fi
...
EOSCRIPT

Ce devrait etre plus lisible alors.

Michel.


Avatar
Frédéric Gaudy
essaie plutôt:

ssh -xT lordinateur.a.controler.fr <<EOSCRIPT
if [ -t /home/$USER ]
then
mkdir /home/$USER
fi
...
EOSCRIPT

Ce devrait etre plus lisible alors.

Michel.



Ok, mais maintenant si on compliqué le choses ...

Si on veut découper le script en plusieurs fichiers...

-----
#!/bin/sh
ssh -xT un.ordinateur.a.controler.fr <<EOSCRIPT
cat /le/fichier/qui/contient/les/commandes/à/exécuter/1.sh
...
EOSCRIPT

ssh -xT un.autre.ordinateur.a.controler.fr <<EOSCRIPT
cat /le/fichier/qui/contient/les/commandes/à/exécuter/2.sh
...
EOSCRIPT
---


Mais toujours avoir l'interprétation des variables sur l'ordinateurs de
commandes et l'exécution des commandes sur l'ordinateur controlé.

Mais l'example fournit ne fonctionne pas..

des idées?

Avatar
Michel Tatoute

Mais l'example fournit ne fonctionne pas..



c'est la trame... pour le reste, il y a l'huile de coude et le jus de
cervelle.

des idées?


Ben, heuu.. j'ai trouvé!!! : lire la doc!

Michel.

Avatar
Vincent Bernat
OoO En cette fin de nuit blanche du lundi 27 octobre 2003, vers 05:12,
Frédéric Gaudy disait:

Mais toujours avoir l'interprétation des variables sur l'ordinateurs de
commandes et l'exécution des commandes sur l'ordinateur controlé.

Mais l'example fournit ne fonctionne pas..

des idées?


fr.comp.unix, ce n'est pas du tout spécifique à Linux.
--
panic("floppy: Port bolixed.");
2.2.16 /usr/src/linux/include/asm-sparc/floppy.h