我试图比较两个字符串,一个来自Pyserial,另一个是硬编码的消息。它们似乎完全相同,但出于某种原因,wait_prompt函数只返回0。
def wait_prompt(device, msg):
device.write("\n\n")
device.flush()
msg = msg + "\n"
output = device.readline()
print("\n")
print("Looking for: " + msg + "|end")
print("CLI shows: " + output + "|end")
if output == msg:
return 1
return 0
def initialize_router(device):
print ("Router connected on port " + port[0])
while wait_prompt(device, "Would you like to enter the initial configuration dialog? [yes/no]: ") == 0:
time.sleep(1)
device.write("no\n")
device.flush()
while wait_prompt(device, "Line protocol on Interface Vlan1, changed state to up") == 0:
time.sleep(1)
time.sleep(2)
device.write("\n")
device.flush()
在我工作的时候,有没有更好的方法可以通过控制台电缆与终端通信?我看到了pexpect,但它似乎无法连续工作。
溶液
问题是输出在结尾返回,\r\n而不是像我预期的那样。我修改了代码,只搜索字符串的一部分来验证测试。这里是:
def wait_prompt(device, msg):
device.write("\n\n")
device.flush()
output = device.readline()
if msg in output:
return 1
return 0
def initialize_router(device):
print ("Router connected on port " + port[0])
while wait_prompt(device, "[yes/no]:") == 0:
time.sleep(1)
device.write("no\n")
device.flush()
while wait_prompt(device, "Line protocol on Interface Vlan1, changed state to up") == 0:
time.sleep(1)
time.sleep(2)
device.write("\n")
device.flush()