调用 putty/plink 启动带有用户输入的远程 SSH Linux 脚本

调用 putty/plink 启动带有用户输入的远程 SSH Linux 脚本

看似简单的问题,却产生了不太理想的结果。

执行 putty 来启动远程 Linux 服务器上需要用户输入的脚本

远程脚本确实read -p "Please enter name" NAME
可以用于plink通过 SSH 执行脚本,以下尝试和问题如下所示:- 注意,这-load ns是要加载不存在的会话,即确保不使用默认值

1plink.exe -load ns <ip_addr> -l <user> -pw <password> <script path/name> 问题)不允许/显示用户输入,即非交互式的。

2)添加-t分配一个 pty :-
plink.exe -t -load nc <ip_addr> -l <user> -pw <password> <script path/name> 问题)好的,现在可以看到用户输入,但是当按下退格键时,我得到了 Ctrl+H (^H),如果用户没有犯错那就好了!

3)使用已保存会话的 putty
putty.exe -load "SavedSession"
问题) (A)打开一个新窗口,虽然不是什么大问题,但也不那么好看。(二)保存的会话不能轻易已移动(C)获取密码提示,无法像 plink 那样提供密码,我知道我知道,使用密钥,但这是一个封闭的私人网络,不使用密钥更容易!

因此理想情况下,我希望 SSH 以在线方式执行,即在我所在的批处理文件/命令行 shell 中执行,不提示输入用户名/密码,运行 linux 脚本并允许提示和删除/退格键工作。

非常感谢您提前提供的任何想法/解决方案。

答案1

添加 -t 来分配一个 pty ... 好的,现在可以看到用户输入,但是当按下退格键时,我得到了 Ctrl+H (^H)

让你的脚本运行[ -t 0 ] && stty erase ^H并且 Backspace 键应该被接受。

更好的解决方案是使用 OpenSSH 的端口 - 例如 Cygwin 或 MinGW 的端口 - 它将像 PuTTY 一​​样为您提供完整的终端仿真,但将其保留在控制台窗口中。(叮当该工具专为原始 8 位数据传输而设计。

编辑:Cygwin 的一个缺点可能是它缺乏 IPv6 支持(如果我没记错的话)。


获取密码提示,无法像 plink 那样提供密码

[...] 但这是一个封闭的私人网络,更容易不用密钥!

然而你有一个问题,设置密钥可以解决:)

(虽然这么说会让我感到难过,但是 PuTTY 也接受-pw。)

相关内容