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

Как выполнить удаленную команду в PuTTY после входа в систему и сохранить работоспособность оболочки?

Что я пытаюсь сделать: запустить сессию PuTTY из командной строки, войти на удаленную машину и cd в предоставленную директорию.

putty.exe -agent -ssh some.host

Это откроет сеанс и войдет в систему с моим стандартным логином и личным ключом.

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

Это откроет сеанс, войдет в систему, выполнит команду (в данном случае cd) ** и выйдет**.

Как открыть сессию, войти в систему, cd и оставить сессию открытой?

Фон: Я использую emacs под Windows и часто редактирую файлы на удаленных Unix-машинах с помощью tramp & plink. Я хочу сделать горячую клавишу, которая откроет PuTTY сессию для этой удаленной машины и chdirs в каталог этого файла. Со стороны Emacs ничего страшного, но я застрял с PuTTY.

Ответы (2)

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

-m делает то, что заставляет PuTTY инструктировать SSH сервер запускать эту команду(ы) INSTEAD оболочки. Как только ваша команда заканчивается, сессия тоже запускается.

Если вы хотите запустить оболочку после команды cd, вам нужно явно добавить ее в вашу cmd.txt, например:

cd /my/path ; /bin/bash

Также -m подразумевает “nopty”/неинтерактивный режим. Для использования интерактивной оболочки вам нужно переопределить ее с помощью переключателя -t .

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

Или же используйте KiTTY с переключателем -cmd, который делает то, что вы хотите (и не нуждается во временном файле).

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

Бродячий сеанс, который вы начинаете в emacs, и сеанс оболочки, который вы запускаете через шпаклевку, являются полностью отдельными процессами.

Вероятно, вам лучше проверить конфигурационные опции для tramp-сессии, чтобы узнать, есть ли способ установить каталог по умолчанию для каждого хоста в настройках emacs. Может быть, начать с опции конфигурации tramp-remote-path, как задокументировано здесь .

Если вам нужно использовать шпаклевку для установления соединения, вы, вероятно, захотите установить туннель ssh и заставить emacs/tramp подключиться через него.

Похожие вопросы

19
12
16
16
4