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


35

我要执行的操作:从命令行启动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,经常使用tramp和plink在远程Unix机器上编辑文件。我要创建一个热键,以打开该远程计算机的PuTTY会话,并chdirs到该文件的目录。emacs方面没什么大不了的,但是我坚持使用PuTTY。

Answers:


33

这样做的-m作用是,它使PuTTY指示SSH服务器启动该命令的外壳程序INSTEAD。因此,命令完成后,会话也将完成。

如果要在cd命令后运行shell,则需要将其显式添加到cmd.txt,例如:

cd /my/path ; /bin/bash

-m暗含“ nopty” /非交互模式。要使用交互式外壳,您需要使用-tswitch覆盖它。

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

另外,也可以将KiTTY及其-cmd开关用于所需的操作(不需要临时文件)。


我试过了(将/ bin / bash添加到cmd.txt),但这不起作用。据我了解,bash以非交互模式启动,并且没有任何要执行的代码,因此退出。有没有办法以这种方式启动交互式外壳?
Artyom V. Kireev 2013年

同时,我尝试启动mc。:-)没有,但提供了一些输出:Cannot get terminal settings: Invalid argument (22) TERM environment variable needs set.
Artyom V. Kireev 2013年

感谢这里的指导,但是尝试使用腻子-m "myfile.sh" -t连接到tinycorelinux vm(/ bin / ash)时似乎出现问题。我将收到以下错误消息:i.imgur.com/QN5oRXC.png(我的脚本以echo ".."它开头的字符始终会在非法字符之后显示我脚本中的第一个字母
Vincent De Smet 2014年

如果我在腻子配置文件中使用配置远程命令,它将起作用
Vincent De Smet 2014年

-1

您在emacs中启动的流氓会话和通过腻子运行的shell会话是完全独立的过程。

您最好检查一下tramp的配置选项,以查看是否有一种方法可以在emacs配置中为每个主机设置默认目录。也许从此处记录tramp-remote-path配置选项开始。

如果需要使用腻子建立连接,则可能要设置ssh隧道,并通过它连接emacs / tramp。


Emacs和流浪汉在这里无关紧要,我补充说只是为了背景。这与在emacs中编辑文件无关,而与打开外壳程序对该文件进行其他操作(例如,运行脚本)有关。我已经厌倦了“启动腻子,选择主机,然后使用cd进入所需的路径”,并希望实现自动化。
Artyom V. Kireev 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.