Comment puis-je exécuter des commandes en mode batch sur ssh? Autrement dit, quel est l' ssh
équivalent de la commande sftp -b <filename> <hostname>
?
J'ai un ensemble de commandes que je souhaite exécuter sur un ensemble d'hôtes se connectant ssh
. Plus sftp
, je stocke les commandes dans un fichier filename
et me connecte à l'hôte et exécute les commandes à l'aide de la commande mentionnée précédemment.
Est-ce que quelque chose comme ça est possible ssh
?
Réponses:
Corrigez-moi si je me trompe, mais vous semblez vouloir exécuter des commandes shell régulières sur le serveur distant où le script est local.
Je le fais avec des applications d'exécution à distance « » dans mon environnement de test en utilisant Python au lieu de la coquille:
ssh $userhost python < $pythonscriptfilename
.la source
L'équivalent SSH
sftp -b <filename> <hostname>
serait:ssh -o BatchMode=yes <hostname> sh -s < "<filename>"
la source
Que diriez-vous de rester simple et d'exécuter le fichier "batch" sur l'autre ordinateur?
Et le fichier batch serait un script shell normal donc la syntaxe est bien connue.
la source
man expect
? : \mais ce n'est pas le moyen parfait.
la source
expect
est conçu pour interagir avec les programmes qui s'attendent à être exécutés sur un terminal. Ceci n'est pas lié au problème de l'exécution de commandes sur ssh.peut-être
la source
Vous pouvez utiliser des commandes forcées ssh.
Ceux-ci sont associés à une clé particulière. Lorsqu'une authentification est effectuée avec cette clé, cette commande est exécutée et la connexion se ferme. Un avantage de cette approche est une sécurité accrue, car dans ce cas, la clé ne peut pas être utilisée pour accéder à un shell de connexion.
la source
Une autre option pour un script d'Arcege serait une fonction Bash:
Je n'utilise pas l'
-T
option de ssh , car elle ne fonctionne pas dans tous les cas.Ce script utilise l'expansion des paramètres sur le tableau des paramètres positionnels
$@
:"${@:(-1)}"
se développe jusqu'au dernier paramètre (forme d'abord littéralement la fin)"${#@}"
s'étend au nombre de paramètres positionnels"${@:1:${#@}-1}"
se développe en une liste de tous les paramètres du premier au dernier avant (littéralement le nombre de paramètres moins un).la source