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