Объект возрождения Python Pexpect Flush

1

У меня есть 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.
  • 0
    Pexpect не отправляет команды дважды. Может ли соединение telnet закрываться перед отправкой exit ?
Теги:
pipe
pexpect

1 ответ

1

Do

child.send(cmd)
child.pexpect(cmd)
child.send('\n')

вместо

child.sendline(cmd)

Это решит вашу проблему. (но при отправке пароля do child.sendline(passwrd))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню