预期正则表达式不起作用
pexpect regex not working
我有一个脚本,它使用 pexpect 远程登录到交换机并将其 运行 配置复制到 tftp 服务器。如果我提供主机名,则脚本可以正常工作,但在 pexect 中使用正则表达式时,会发生超时。代码如下:
child = pexpect.spawn('telnet ' +ip)
child.expect ('Login: ')
child.sendline (username)
child.expect ('Password: ')
child.sendline (password)
child.sendline ('enable')
child.expect('Password: ')
child.sendline(password)
child.expect('.*\-.*#')
child.sendline ('copy running-config tftp://10.0.37.111/'+filename+'.txt')
time.sleep(5)
我将上面的正则表达式作为我当前交换机的主机名是 Force10-60。谢谢
child.expect(r'.+\-.+#')
您可以通过提供 raw string
来尝试。
或使用
child.expect('#')
匹配任何主机名
我知道这个问题已经被接受了答案,但我想添加一个关于如何处理匹配的正则表达式的解释。
所以,我的问题是我需要获取出现在两个特定字符串之间的字符串。
这就是我解决问题的方法:
import pexpect
child = pexpect.spawn(...)
child.sendline(...)
child.expect(r'firstString(.*?)secondString')
regex_obj = child.match
print(regex_obj.group(1).decode('utf-8'))
希望这对某人有所帮助!
我有一个脚本,它使用 pexpect 远程登录到交换机并将其 运行 配置复制到 tftp 服务器。如果我提供主机名,则脚本可以正常工作,但在 pexect 中使用正则表达式时,会发生超时。代码如下:
child = pexpect.spawn('telnet ' +ip)
child.expect ('Login: ')
child.sendline (username)
child.expect ('Password: ')
child.sendline (password)
child.sendline ('enable')
child.expect('Password: ')
child.sendline(password)
child.expect('.*\-.*#')
child.sendline ('copy running-config tftp://10.0.37.111/'+filename+'.txt')
time.sleep(5)
我将上面的正则表达式作为我当前交换机的主机名是 Force10-60。谢谢
child.expect(r'.+\-.+#')
您可以通过提供 raw string
来尝试。
或使用
child.expect('#')
匹配任何主机名
我知道这个问题已经被接受了答案,但我想添加一个关于如何处理匹配的正则表达式的解释。
所以,我的问题是我需要获取出现在两个特定字符串之间的字符串。 这就是我解决问题的方法:
import pexpect
child = pexpect.spawn(...)
child.sendline(...)
child.expect(r'firstString(.*?)secondString')
regex_obj = child.match
print(regex_obj.group(1).decode('utf-8'))
希望这对某人有所帮助!