背景:我正在使用python和paramiko来自动化我每次必须交给一个类的程序时经历的过程.我们使用一个名为"handin"的命令来提交源代码,但这必须从学校的计算机上完成.因此,当我从家里提交代码时,我必须:sftp进入学校服务器,将文件放入目录,ssh进入学校计算机,使用'handin'命令
我可以成功地将文件放到学校的机器上.当我尝试使用exec_command('handin my files')然后读取输出以确定下一个操作时,会出现问题.
所以我有
try:
(stdin, stdout, stderr) = client.exec_command(s)
except:
print 'whoops'
sys.exit()
print stdout.readlines()
Run Code Online (Sandbox Code Playgroud)
但是由于某些原因导致死锁,脚本似乎什么都不做,我必须最终杀死整个过程(ctrl + c不起作用).我不确定exec_command是否未正确完成(即使它已经退出try/catch块)或者我是否有网络问题或者是什么.
有任何想法吗?
更新:
问题在于在执行期间与handin命令交互.执行命令后,handin可能仍在运行,也可能不运行.如果它第一次提交它说成功,等等等等,并完成执行.一切都很好.但是如果我重新提交,我必须为每个文件授权覆盖(stdin.write('y')).
TL/DR:
如何相应地检查exec_command()是否仍在运行,等待输入和stdout的readline()?