Использую 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-а брать.



