在写一个shell脚本A,其中调用了另一个脚本,例如test.sh但是test.sh中有交互的内容需要用户依次输入 a 回车 b 回车 回车 回车我想自动的实现它,请问应该在A中怎么写才会自动填入这些内容,前提是tesh.sh执行的过程还要让用户看到,不能把它重定向
2 回答
MM们
TA贡献1886条经验 获得超2个赞
用pexpect,以下代码供参考:
#!/usr/bin/python import sys import pexpect password = 'password'expect_list = ['(yes/no)', 'password:']p = pexpect.spawn('ssh username@localhost ls') try: while True: idx = p.expect(expect_list) print p.before + expect_list[idx], if idx == 0: print "yes" p.sendline('yes') elif idx == 1: print password p.sendline(password) except pexpect.TIMEOUT: print >>sys.stderr, 'timeout'except pexpect.EOF: print p.before print >>sys.stderr, '<the end>'
输出:
username@localhost's password: password
Permission denied, please try again.
username@localhost's password: password
Permission denied, please try again.
username@localhost's password: password
Permission denied (publickey,gssapi-with-mic,password).
<the end>
动漫人物
TA贡献1815条经验 获得超10个赞
用管道输入,然后echo出来,给用户看
A.sh
echo -e a\nb\n\n\n | bash test.shecho aecho bechoechoecho
如果管道输入满足不了你的需求,就用expect,这个比较复杂了。
- 2 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消