如何解决期望不正确匹配模式
当使用 sendline 插入 sudo 密码时,我一直在尝试匹配模式,但不知何故无法正常工作。我可能做错了什么。我尝试了各种方法,但没有任何效果......请帮忙。
示例:
import pexpect
USER = "someuser"
HOST = "IPADDRESSOFREMOTEHOST"
PORT="22"
PORTINFO = "-p " + PORT
CONNECTION = USER + "@" + HOST
SSHTIMEOUT = 5
CMDTIMEOUT=1
SSHOPTIONS = "-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oPubkeyAuthentication=no -oConnectTimeout={0}".format(SSHTIMEOUT)
CMD = 'ssh %s %s %s' % (SSHOPTIONS,CONNECTION,PORTINFO)
PWD = "correctpassword"
child = pexpect.spawn(CMD,timeout=int(CMDTIMEOUT),encoding='utf-8')
r1 = child.expect(['password: ','Connection timed out','No address associated with hostname','Could not resolve hostname'])
print(r1)
0 -> matching 'password'
child.sendline(PWD)
r2 = child.expect(['Permission denied','[#\$]'])
print(r2)
1 -> matching '[#\$]'
child.sendline("df -h")
child.sendline("lscpu")
child.sendline("sudo ls /")
r3 = child.expect(['password','[sudo]','[#\$]'])
print(r3)
1 -> matching '[sudo]'
child.sendline(PWD)
r3 = child.expect(['password','[#\$]'])
print(r3)
1 -> AGAIN matching '[sudo]' where it should really be matching '[#\$]'] this is wrong
看到它总是匹配'[sudo]'的最后一行,它应该真正匹配'[#\$]',因为发送了正确的密码。
我不确定我做错了什么,它似乎没有与提示行匹配,而是与整个输出匹配?我不太确定。如果是这种情况,我怎么能弄清楚是否输入了正确的 sudo 密码?
-贾廷
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。