我想自动的实现它,请问应该在A中怎么写才会自动填入这些内容?

在写一个shell脚本A,其中调用了另一个脚本,例如test.sh
但是test.sh中有交互的内容
需要用户依次输入 a 回车 b 回车 回车 回车
我想自动的实现它,请问应该在A中怎么写才会自动填入这些内容,前提是tesh.sh执行的过程还要让用户看到,不能把它重定向

UYOU
浏览 140回答 2
2回答

MM们

用pexpect,以下代码供参考:#!/usr/bin/python import&nbsp;sys&nbsp; import&nbsp;pexpect password&nbsp;=&nbsp;'password'expect_list&nbsp;=&nbsp;['(yes/no)',&nbsp;'password:']p&nbsp;=&nbsp;pexpect.spawn('ssh&nbsp;username@localhost&nbsp;ls') try: &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;True: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx&nbsp;=&nbsp;p.expect(expect_list) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;p.before&nbsp;+&nbsp;expect_list[idx],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;idx&nbsp;==&nbsp;0: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"yes" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.sendline('yes') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;idx&nbsp;==&nbsp;1: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.sendline(password) except&nbsp;pexpect.TIMEOUT: &nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;>>sys.stderr,&nbsp;'timeout'except&nbsp;pexpect.EOF: &nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;p.before &nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;>>sys.stderr,&nbsp;'<the&nbsp;end>'输出:username@localhost's password: passwordPermission denied, please try again.username@localhost's password: passwordPermission denied, please try again.username@localhost's password: passwordPermission denied (publickey,gssapi-with-mic,password).<the end>

动漫人物

用管道输入,然后echo出来,给用户看A.shecho&nbsp;-e&nbsp;a\nb\n\n\n&nbsp;|&nbsp;bash&nbsp;test.shecho&nbsp;aecho&nbsp;bechoechoecho如果管道输入满足不了你的需求,就用expect,这个比较复杂了。
打开App,查看更多内容
随时随地看视频慕课网APP