使用pexpect,我连接到一台Linux机器控制台,这是一台功能有限的机器。
当我生成连接并尝试使用send或sendline执行命令时,我收到错误"ttyAMA0: 1 input overrun(s)"
这可能是因为pexpect
在消耗之前非常快速地向控制台发送输入并导致输入缓冲区溢出。
如果以某种方式pexpect
减慢了输入到控制台的速度,那么它将阻止输入缓冲区溢出。是否有任何参数定义输入到控制台的字符速率?
对于类似的问题,tcl-expect有命令send_slow,它将输入速率降低到提供的值。很高兴在python-expect中有send_slow
的等价物。
还尝试在期望中设置窗口大小,但错误仍然没有变化。 我得到的错误也是间歇性的。
答案 0 :(得分:0)
免责声明:这是一种解决方法,而不是缓冲区溢出问题的实际解决方案。 做了以下步骤:
stty speed 50
delaybeforesend
和delayaftersend
设置为所需的值(仅当您的devide太慢时才需要)def sendline_slow(spawn_id,cmd):
for char in str(cmd):
spawn_id.send(char)
spawn_id.send('\n')
宾果。现在我能够以超级慢的方式发送命令到控制台......!