>>> ssh_stuff
['yes/no', 'Password:', 'password', 'Are you sure you want to continue connecting']
>>> prompt
['$', '#']
>>> child = pexpect.spawn('ssh kumarshubham@localhost')
>>> child.expect(ssh_stuff)
1
>>> child.sendline(getpass.getpass())
Password:
11
>>> child.expect(prompt)
0
>>> child.sendline('ls -l')
6
>>> child.expect(prompt)
0
>>> print child.before, child.after
可以告诉我为什么我的孩子。之前和之后是空的,它应该返回目录列表。
答案 0 :(得分:0)
expect
方法采用模式或模式列表。这些模式被视为正则表达式。从文档中可能不太清楚,但是如果你查看pexpect
的代码,那么你可以看到它就是这种情况。
提示变量以
给出prompt = ['$', '#']
$
是正则表达式中的特殊字符,它将根据python正则表达式文档进行匹配:
' $'匹配字符串的结尾或在字符串末尾的换行符之前,并且在MULTILINE模式下也匹配换行符之前。
我们可以看到它是在控制台输出中匹配的那个:
>>> child.expect(prompt)
0
要将$
符号解释为文字,必须以反斜杠开头。
prompt = ['\$', '#']