web-dev-qa-db-fra.com

Comment exécuter une commande à distance dans PuTTY après la connexion et garder le shell en marche?

Ce que j'essaie de faire: démarrer une session PuTTY à partir de la ligne de commande, vous connecter à la machine distante et cd au répertoire fourni.

PuTTY.exe -agent -ssh some.Host

Cela ouvrira une session et un login avec mon identifiant par défaut et ma clé privée.

echo cd /some/remote/path/ > c:/stuff/cmd.txt
PuTTY.exe -agent -ssh some.Host -m 'c:/stuff/cmd.txt'

Cela va ouvrir une session, vous connecter, exécuter une commande (cd dans ce cas) et quitter .

Comment ouvrir une session, se connecter, cd et garder la session ouverte?

Contexte: J'utilise emacs sous Windows et, souvent, j'édite des fichiers sur des machines Unix distantes à l'aide de tramp & plink. Je veux créer un raccourci clavier qui ouvre une session PuTTY pour cette machine distante et des chdirs dans le répertoire de ce fichier. Pas un gros problème du côté d’emacs, mais je suis coincé avec PuTTY.

34
Artyom V. Kireev

Ce que le -m fait, c’est que PuTTY ordonne au serveur SSH de lancer cette commande au lieu d’un shell. Donc, une fois votre commande terminée, la session aussi.

Si vous souhaitez exécuter le shell après la commande cd, vous devez l’ajouter explicitement à votre cmd.txt, par exemple:

cd /my/path ; /bin/bash

De plus, le -m implique le mode "nopty" ​​/ non interactif. Pour utiliser un shell interactif, vous devez remplacer celui-ci à l'aide du commutateur -t .

PuTTY.exe -ssh example.com -m "c:\path\cmd.txt" -t

Vous pouvez également utiliser KiTTY avec son commutateur -cmd, qui fait ce que vous voulez (et n’a pas besoin d’un fichier temporaire).

31
Martin Prikryl