l'exécution du script sur l'hôte distant par ssh


1

J'ai écrit un script test.sh (sa fonction est la même que celle de la commande "hostname") ci-dessous,

#!/bin/bash
printf "`uname -a | awk '{print $2;}'` "

Je peux obtenir mon nom d'hôte avec

source /home/arton/test.sh 

ou

/home/arton/test.sh

Ensuite, j'ai lancé la commande

ssh myhost "source /home/arton/test.sh"

et attendu obtenir "mon hôte", mais j'ai obtenu la sortie totale de uname -a

Linux myhost 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 ...

Après essai et erreur, les commandes ci-dessous peuvent générer "myhost"

ssh myhost "/home/arton/test.sh"
ssh myhost "bash -s" < /home/arton/test.sh

Mais je ne sais toujours pas pourquoi cela se produit.


Je ne peux pas reproduire votre problème, cela fonctionne bien sur mon système.
MariusMatutiae

Je reçois toujours le résultat de "uname -a" lorsque je lance la commande: ssh myhost "source /home/arton/test.sh". Je ne sais pas si l'environnement affectera le comportement ou non.
Arton

1
Savez-vous que vous vous référez parfois au fichier local /home/arton/test.sh, mais parfois sur le même chemin sur le éloigné machine? Quel est le shell de l'utilisateur distant? Est-ce csh peut être?
Kamil Maciorowski

Oui, je sais que je fais référence au même chemin sur l'hôte différent, mais tous les hôtes de notre réseau local montent le même système de fichiers. Tu as raison! Le shell de journalisation est csh, et c’est le problème. J'ai testé le script avec bash lorsque j'ai posté la question. J'aurais dû utiliser ssh myhost "/home/arton/test.sh" au lieu de ssh myhost "source /home/arton/test.sh".
Arton
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.