我有一个从命令行运行的小 test.sh 脚本,./test.sh
它会要求我输入我输入的 2 个问题,然后循环直到我ctrl-c
退出。
我想编写一个可以运行我的 Python 小脚本test.sh
,并从我在 Python 中设置的变量 var1 和 var2 输入脚本问题的输入。
我还想要另一个变量 var3,它循环 x 长并运行我的 test.sh,然后结束它,然后根据 var3 的值每 x 分钟重新启动一次
我写了这段代码,但它似乎没有test.sh
在它启动后将命令传递给我:
import os
os.system('./test.sh arg1')
time.sleep(10)
sh('input answer 1')
time.sleep(5)
sh('input answer 2')
目前,我的代码已基于此线程进行了更新,如下所示:
#!/usr/bin/env python
import pexpect
import sys
import os
child = pexpect.spawn ('./test.sh -arg1')
child.expect ('some expected output from the .sh file')
child.expect ('more expected output from the .sh file')
child.expect ('(?i)Enter Username:')
child.sendline ('myusername')
child.expect ('(?i)Enter Password:')
child.sendline ('mypassword')
# sys.stdout.write (child.after)
# sys.stdout.flush()
time.sleep(30)
child.sendcontrol('c')
child.close()
print 'Goodbye'
--fixed-- 现在问题是我的超时或睡眠被打断了,可能是我的 .sh 脚本的输出。当我在未注释 timeout 或 time.sleep 的情况下运行此脚本时,它要么没有影响,要么直接进入我的 child.close() 并结束程序,要么挂断 child.sendline ('mypassword')出于某种原因,我卡在了 .sh 脚本的密码提示符中……也许它并没有真正卡在那里,因为我无法与之交互。 - 固定的 -
一旦我让脚本暂停 30 秒(或 x),那么我剩下要做的就是让整个事情循环 x 次。最后,我需要添加错误检查,因为 .SH 以不同的文本字符串响应,表明我需要立即再次运行脚本。
非常感谢大家的帮助!