2013-04-25 15:06:20 +0000 2013-04-25 15:06:20 +0000
37
37

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

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

putty.exe -agent -ssh some.host

Cela ouvrira une session et se connectera avec mon nom de connexion et ma clé privée par défaut.

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

Cela ouvrira une session, se connectera, exécutera une commande (cd dans ce cas) et sortira.

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

Contexte : J'utilise emacs sous windows et j'édite souvent des fichiers sur des machines Unix distantes en utilisant tramp & plink. Je veux créer un raccourci clavier qui ouvre une session PuTTY pour cette machine distante et chdir le répertoire de ce fichier. Ce n'est pas un gros problème du côté d'emacs, mais je suis coincé avec PuTTY.

Réponses (2)

33
33
33
2013-04-25 16:00:56 +0000

Le -m fait en sorte que PuTTY demande au serveur SSH de lancer la ou les commandes INSTEAD d'un shell. Ainsi, une fois que votre commande est terminée, la session l'est aussi.

Si vous voulez lancer le shell après la commande cd, vous devez l'ajouter explicitement à votre cmd.txt, comme :

cd /my/path ; /bin/bash

Aussi le -m implique le mode “nopty”/non-interactif. Pour utiliser un shell interactif, vous devez passer outre en utilisant le commutateur -t .

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

Alternativement, utilisez KiTTY avec son commutateur -cmd, cela fait ce que vous voulez (et ne nécessite pas de fichier temporaire).

-1
-1
-1
2013-04-25 15:11:43 +0000

La session tramp que vous lancez dans emacs et la session shell que vous exécutez via putty sont des processus complètement distincts.

Vous feriez sans doute mieux de vérifier les options de configuration de tramp pour voir s'il y a un moyen de définir un répertoire par défaut par hôte dans votre configuration emacs. Peut-être commencer par l'option de configuration tramp-remote-path comme documenté ici .

Si vous avez besoin d'utiliser putty pour établir la connexion, vous voulez probablement mettre en place un tunnel ssh et faire en sorte que emacs/tramp se connecte par ce biais.