我试图比较来自Pyserial的2个字符串,另一个是硬编码的消息。它们似乎是相同的,但由于某种原因,函数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()
虽然我在这里,有没有更好的方式通过consol电缆与终端进行通信?我看到了pexpect,但它似乎不能连续工作。
解
问题是输出结束时返回\ r \ n \ r \ n而不仅仅是\ 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()
答案 0 :(得分:0)
问题是输出结束时返回\ r \ n \ r \ n而不仅仅是\ 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()