我有一个54个字符的命令,使用child.sendline()通过SSH发送到Voltha CLI服务器[preprovision_olt -t ponsim_olt -H olt.voltha.svc:50060] 我希望能够与之匹配,以便在下次出现之前将其从孩子身上删除。 但是我永远无法匹配,因为child.before()的输出在结尾处插入了一个'\ r'字符,这会截断输出 这就是child.before()输出的样子
60reprovision_olt -t ponsim_olt -H olt.voltha.svc:500
在500之后插入'\ r',导致随后的两个字符覆盖前两个字符
为什么会这样?
这是我的代码:
def send_command_to_voltha_cli(logDir, cmd, logFile):
vcliIp = extractIpAddr('vcli')
print (vcliIp)
print (cmd)
output = open(logDir + '/' + logFile, 'w')
child = pexpect.spawn('ssh -p 5022 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no voltha@' + vcliIp)
child.expect('[pP]assword:')
child.sendline('admin')
child.expect('\([0-9]mvoltha.*[0-9]m\) ')
bytes = child.sendline(cmd)
print (bytes)
child.expect_exact(cmd)
child.expect('\([0-9]mvoltha.*[0-9]m\) ')
response = child.before
print (response)
output.write(child.before)
output.close()
child.close()
答案 0 :(得分:0)
这似乎是一件麻烦事,只有preprovision_olt命令是这样的,一旦使用child收集了错误的发送命令,我将简单地解决此问题。在作为日志文件的第一行之前,我将简单地删除文件的第一行