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

Jak uruchomić zdalną komendę w PuTTY po zalogowaniu i utrzymać działającą powłokę?

Co próbuję zrobić: uruchomić sesję PuTTY z linii poleceń, zalogować się do zdalnego komputera i cd do podanego katalogu.

putty.exe -agent -ssh some.host

To otworzy sesję i zaloguje się przy użyciu mojej domyślnej nazwy logowania i klucza prywatnego.

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

Otworzy to sesję, zaloguje się, wykona polecenie (w tym przypadku cd) i wyjdzie.

Jak otworzyć sesję, zalogować się, cd i utrzymać sesję otwartą?

Tło: Używam emacsa pod Windows i często edytuję pliki na zdalnych maszynach uniksowych za pomocą tramp & plink. Chcę zrobić klawisz skrótu, który otwiera sesję PuTTY dla tej zdalnej maszyny i chdirs do katalogu tego pliku. Nie jest to wielka sprawa po stronie emacsa, ale utknąłem z PuTTY.

Odpowiedzi (2)

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

To, co robi -m, to fakt, że PuTTY instruuje serwer SSH do rozpoczęcia tej komendy (komend) INSTEAD powłoki. Więc kiedy twoja komenda zakończy się, sesja również się zakończy.

Jeśli chcesz uruchomić powłokę po komendzie cd, musisz dodać ją jawnie do swojego cmd.txt, np:

cd /my/path ; /bin/bash

Również -m implikuje “nopty”/ tryb nie-interaktywny. Aby użyć powłoki interaktywnej, musisz to nadpisać używając przełącznika -t .

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

Alternatywnie użyj KiTTY z jego przełącznikiem -cmd, który robi to co chcesz (i nie potrzebuje pliku tymczasowego).

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

Sesja trampa, którą uruchamiasz w emacsie i sesja powłoki, którą uruchamiasz przez putty, są całkowicie oddzielnymi procesami.

Prawdopodobnie lepiej będzie sprawdzić opcje konfiguracyjne dla trampa, aby zobaczyć, czy istnieje sposób na ustawienie domyślnego katalogu na hosta w konfiguracji emacsa. Może zacznij od opcji konfiguracyjnej tramp-remote-path jak udokumentowano tutaj .

Jeśli musisz użyć putty do nawiązania połączenia, prawdopodobnie chcesz skonfigurować tunel ssh i pozwolić emacs/trampowi połączyć się przez niego.