我使用以下代码打开putty终端并传递命令。终端打开很好,但没有任何反应。脚本停止直到我关闭终端。什么可能导致这里的问题?
import subprocess, time
test=subprocess.Popen('"C:\Program Files (x86)\PuTTY\putty.exe" -ssh -X -I
p:\.ssh\id_dsa.ppk my_name@my_host',
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
test.stdin.write("ls\n")
test.stdin.flush()
test.stdin.close()
stdout_value = test.stdout.read()
print repr(stdout_value)
print 'done'
答案 0 :(得分:2)
putty.exe
不从标准输入读取,也不写入标准输出。它是终端仿真器,因此它从键盘输入并写入其应用程序窗口。
如果要通过标准输入和输出描述符将数据传递到ssh连接,请使用PuTTY包附带的plink.exe
程序。 (它将与putty.exe
位于同一目录中。)它不是终端模拟器,它只是建立一个ssh连接然后驱动stdin和stdout,类似于传统的ssh
命令类Unix系统。
您甚至可以运行ssh
而不是plink
,具体取决于您拥有的Windows版本以及已安装的额外软件包。
此外,我认为plink
和ssh
都需要-i
(小写),而不是-I
(大写)作为指定密钥文件的选项。< / p>