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

Wie führe ich einen Remote-Befehl in PuTTY nach der Anmeldung aus & lasse die Shell laufen?

Was ich versuche: Starten Sie eine PuTTY-Sitzung von der Kommandozeile aus, melden Sie sich am entfernten Rechner an und geben Sie cd in das angegebene Verzeichnis ein.

putty.exe -agent -ssh some.host

Das öffnet eine Sitzung und meldet sich mit meinem Standard-Anmeldenamen und meinem privaten Schlüssel an.

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

Das öffnet eine Sitzung, meldet sich an, führt einen Befehl aus (in diesem Fall cd) und beendet.

Wie öffne ich eine Sitzung, logge mich ein, cd und halte die Sitzung offen?

Hintergrund: Ich benutze emacs unter Windows und bearbeite oft Dateien auf entfernten Unix-Maschinen mit tramp & plink. Ich möchte einen Hotkey erstellen, der eine PuTTY-Sitzung für diesen entfernten Rechner öffnet und chdirs in das Verzeichnis der Datei. Auf der Emacs-Seite ist das keine große Sache, aber ich hänge mit PuTTY fest.

回答 (2)

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

Das -m bewirkt, dass PuTTY den SSH-Server anweist, diesen Befehl bzw. diese Befehle INSTATT einer Shell zu starten. Sobald also Ihr Befehl beendet ist, endet auch die Sitzung.

Wenn Sie die Shell nach dem cd-Befehl starten wollen, müssen Sie ihn explizit an Ihr cmd.txt anhängen, etwa so:

cd /my/path ; /bin/bash

Außerdem impliziert das -m den “nopty”/nicht-interaktiven Modus. Um eine interaktive Shell zu verwenden, müssen Sie dies mit dem -t Schalter überschreiben.

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

Alternativ können Sie auch KiTTY mit dem Schalter -cmd verwenden, das macht, was Sie wollen (und benötigt keine temporäre Datei).

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

Die Tramp-Sitzung, die Sie in emacs starten, und die Shell-Sitzung, die Sie über putty ausführen, sind völlig getrennte Prozesse.

Sie sind wahrscheinlich besser dran, wenn Sie die Konfigurationsoptionen für tramp überprüfen, um zu sehen, ob es eine Möglichkeit gibt, ein Standardverzeichnis pro Host in Ihrer emacs-Konfiguration zu setzen. Beginnen Sie vielleicht mit der Konfigurationsoption tramp-remote-path wie hier dokumentiert .

Wenn Sie putty benutzen müssen, um die Verbindung herzustellen, wollen Sie wahrscheinlich einen ssh-Tunnel einrichten und emacs/tramp über diesen verbinden lassen.