Использую pexpect (expect на python) для работы с коммутатором через telnet:
def snmp(cli):
text("----- snmp")
cli.sendline("")
print "before1=", cli.before
print "after1=", cli.after
cli.expect("Switch# ")
cli.sendline("configure terminal")
print "before2=", cli.before
print "after2=", cli.after
cli.expect("Switch(config)# ")
cli.sendline("snmp-server community public ro")
cli.expect("Switch(config)# ")
cli.sendline("snmp-server community private rw")
cli.expect("Switch(config)# ")
text("snmp OK")
def login(cli):
text("----- login")
cli.expect('Switch login: ')
cli.sendline('admin')
cli.expect('Password:')
cli.sendline('admin')
cli.expect("Switch> ")
cli.sendline("enable")
cli.expect("Switch# ")
text("login OK")
def test2():
import sys
import pexpect
cli = pexpect.spawn('telnet 192.168.2.4', timeout = 3)
cli.delaybeforesend = 0.2
cli.logfile = sys.stdout
login(cli)
snmp(cli)
CLI ----- login
Trying 192.168.2.4...
Connected to 192.168.2.4.
Escape character is '^]'.
Switch login: admin
admin
Password: admin
JetNet5310G (version 1.4-20140529-15:14:55).
Copyright 2006-2012 Korenix Technology Co., Ltd.
Switch> enable
enable
Switch#
CLI login OK
CLI ----- snmp
before1= enable
after1= Switch#
Switch# configure terminal
before2=
after2= Switch#
configure terminal
Switch(config)# Traceback (most recent call last):
Вопрос: почему login срабатывает, а это нет? Видно же что искомая строка с пробелом на конце («Switch(config)# », и без него пробовал тоже) - появляется, но pexpect на этом вешается и не реагирует. Есть же ответ, что ему не нравится? Как правильно его использовать? А то уже думаю другую версию expect-а брать.