У меня есть script, где я создаю объект spawn, используя pexpect.
Код выглядит следующим образом:
self.rshcmd='rsh 192.X.X.X'
self.pipe1 = pexpect.spawn(command=self.rshcmd, logfile=sys.stdout,maxread=512)
Теперь, после того как я получу в этом, я ожидаю, что приглашение, которое я получаю, это >
И теперь я становлюсь su, отправив su
, а затем давая пароль. Теперь мое приглашение, как и ожидалось, станет #
У меня есть маршрутизатор, подключенный к этому порожденному ПК (192.X.X.X), который 192.168.1.1
Я подключу telnet к этому маршрутизатору, отправив telnet 192.168.1.1
. После того, как я закончил с этого маршрутизатора, я хочу выйти из сеанса telnet.
Итак, я отправляю exit
и ожидаю #
, поскольку вернусь к корню созданного компьютера. Но я вижу, что на самом деле я получаю <
как подсказку.
Так почему-то он отправляет "выход" дважды. Один выводит меня из telnet, а другой выводит меня из корня. Я думаю, что труба не вымывается, и мы получаем от него какие-то старые сложенные команды.
Есть ли способ удалить все старые команды в канале?
Из документации есть функция флеша, но она ничего не делает:
flush(self)
This does nothing. It is here to support the interface for a
File-like object.
Do
child.send(cmd)
child.pexpect(cmd)
child.send('\n')
вместо
child.sendline(cmd)
Это решит вашу проблему. (но при отправке пароля do child.sendline(passwrd))
exit
?