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

登录后如何在PuTTY中运行远程命令并保持shell运行?

我想做的是:从命令行启动一个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并保持会话打开?

背景。我在windows下使用emacs,并且经常在远程Unix机器上使用tramp和plink编辑文件。我想做一个热键,为远程机器打开一个PuTTY会话,并将chdirs指向该文件的目录。在emacs这边不是什么大问题,但我被PuTTY卡住了。

答案 (2)

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

-m的作用是,它使PuTTY指示SSH服务器启动该命令而不是shell。所以一旦你的命令完成,会话也就完成了。

如果你想在cd命令之后运行shell,你需要把它明确地添加到你的cmd.txt中,比如。

cd /my/path ; /bin/bash

另外,-m意味着 “nopty”/非交互模式。要使用交互式的shell,你需要使用 -t开关来覆盖它,比如:

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

0x1&


或者使用 KiTTY 和它的 -cmd 开关,这样可以达到你想要的目的 (而且不需要一个临时文件)。

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

你在 emacs 中启动的 tramp 会话和你通过 putty 运行的 shell 会话是完全独立的进程,你最好检查一下 tramp 的配置选项,看看是否有办法在 emacs 配置中为每个主机设置默认目录。

你最好检查一下 tramp 的配置选项,看看是否有办法在 emacs 配置中为每个主机设置一个默认目录。也许可以从tramp-remote-path配置选项开始,就像这里的文档一样。

如果你需要使用putty来建立连接,你可能想建立一个ssh隧道,让emacs/tramp通过它来连接。