如何在PuTTY的commands.txt中模拟Ctrl+Y与Enter按键实现自动化?
解决PuTTY自动化脚本中模拟Ctrl+Y和Enter的问题
嘿,这个场景我之前帮朋友处理过,咱们来一步步搞定它~
首先要说明:PuTTY的GUI版本(putty.exe)在处理交互式输入时,用-m参数执行命令的方式有时候不太灵活,更推荐用PuTTY套件里的Plink(plink.exe)——这是专门为命令行自动化设计的工具,处理这类按键模拟会靠谱很多。
方法一:用Plink实现(推荐)
1. 准备Plink
如果你已经安装了PuTTY,Plink通常和putty.exe在同一个目录里;如果没有,直接下载PuTTY套件就能拿到它。
2. 编写commands.txt
你需要在commands.txt里模拟两个操作:发送Ctrl+Y,然后按Enter。这里的关键是Ctrl+Y对应的ASCII字符是十进制25(十六进制0x19),你可以用两种方式输入它:
- 方式A:文本编辑器直接插入
用Notepad++这类编辑器的话,打开commands.txt,点击编辑→字符面板,找到ASCII码25的字符(显示为SUB),插入它;然后换行(这就模拟了Enter键)。如果之后还有要执行的命令,继续往下写就行。 - 方式B:用命令生成控制字符
如果你喜欢用命令行生成,可以在commands.txt里写:printf '\x19\n' # 这里\x19就是Ctrl+Y的十六进制表示,\n就是Enter # 后面可以追加你需要执行的其他命令,比如: # ls -l
3. 执行命令
把原来的putty.exe换成plink.exe,命令变成:
plink.exe -ssh user@ipaddress -pw password -m commands.txt > log.txt
方法二:坚持用putty.exe的管道方式
如果你不想换工具,可以用Windows的管道来直接发送按键:
(echo ^Y & echo.) | putty.exe -ssh user@ipaddress -pw password > log.txt
这里的^Y是实际的Ctrl+Y字符,输入方法是:在命令行里按住Ctrl+V,然后按Ctrl+Y,屏幕上会显示一个特殊的方块字符,这就对了。echo.则是模拟Enter键。
⚠️ 注意:这种方式可能不太稳定,因为PuTTY的GUI窗口加载速度可能和管道输入不同步,容易出现按键发送时机不对的情况,所以还是更推荐用Plink。
内容的提问来源于stack exchange,提问作者Plee
相关产品推荐
相关产品推荐

