PooH
Я имел ввиду, не лог свича, а текст вашей с ним сессии телнета :)
DES-3526 Fast Ethernet Switch Command Line Interface
Firmware: Build 5.01.B60
Copyright(C) 2008 D-Link Corporation. All rights reserved.
username:admin
password:********
DES-3526:admin#show ports 1
Command: show ports 1
Port State/ Settings Connection Address Trap
MDIX Speed/Duplex/FlowCtrl Speed/Duplex/FlowCtrl Learning State
----- ---------- --------------------- --------------------- -------- --------
1 Enabled Auto/Disabled Link Down Enabled Disabled
Auto
DES-3526:admin#logout
Command: logout
DES-3526:admin#
**********
* Logout *
**********Connection closed by foreign host.
def login(tn, user, pass1):
dlink = Telnet('10.254.10.3')
dlink.read_until('username:', 5)
dlink.write("%s\r" % 'admin')
dlink.read_until('password:', 5)
dlink.write("%s\r" % '12345678')
time.sleep(0.5)
# trace
dlink.read_until('**********')
dlink.write("%s" % '12345678')
apt-get_me_a_beerДа. Тут товарища спросил, у него такой свич под рукой:
Вы про это?
да, помнится был какой-то косяк с этими свичами, решалось так:
tn = telnetlib.Telnet(ip2)
tn.read_until(“username:”,5)
tn.write(user)
time.sleep(0.3)
print tn.read_some()
tn.write(“\r”)
time.sleep(0.3)
print tn.read_some()
#print tn.read_until(“password:”,5)
tn.write(passw2)
time.sleep(0.3)
print tn.read_some()
tn.write(“\r”)
time.sleep(0.5)
print tn.read_some()
то есть сначала отдается логин, потом спустя некоторое время \r
PooHКажется просветление есть!apt-get_me_a_beerДа. Тут товарища спросил, у него такой свич под рукой:
Вы про это?да, помнится был какой-то косяк с этими свичами, решалось так:
tn = telnetlib.Telnet(ip2)
tn.read_until(“username:”,5)
tn.write(user)
time.sleep(0.3)
print tn.read_some()
tn.write(“\r”)
time.sleep(0.3)
print tn.read_some()
#print tn.read_until(“password:”,5)
tn.write(passw2)
time.sleep(0.3)
print tn.read_some()
tn.write(“\r”)
time.sleep(0.5)
print tn.read_some()
то есть сначала отдается логин, потом спустя некоторое время \r
Create telnet obj ...
Create successful
admin
a
password: ********
Fail!
username:
PooHВы были правы! Все работает:
У меня впечатление что свич не успевает за вами, попробуйте напихать небольших sleep между write`ами
import time
# Controller action
# tn Telnet obj
from telnetlib import Telnet
def login(tn, user, pass1):
user2 = 'admin'
passw2 = 'xxxxxx'
tn = Telnet('<valid_ip>')
tn.read_until("username:",5)
tn.write(user2)
time.sleep(0.5)
#print tn.read_some(),
tn.write("\r")
time.sleep(0.5)
tn.write(passw2)
time.sleep(0.5)
tn.write("\r")
time.sleep(20)
print tn.read_some()
apt-get_me_a_beerКак оказалось метод read_until() можно сказать сам чистит буфер между командами.
А есть какая нить возможность чистить буфер между командами?
Что то типа tn.clear()
command = "create vlan %s tag %d" % (transportVlan, transportVlanTag)
command3 = "show vlan vlanid %d" % (transportVlanTag)
tn.write(command + "\n")
time.sleep(1)
output = tn.read_until("#")
print output
if not reSetDoneCreateVlan.search(output):
print 'Vlan not create'
tn.write(command3 + "\n")
time.sleep(1)
output2 = tn.read_until("#")
print output2