Найти - Пользователи
Полная версия: Python и сетевое оборудование
Начало » Network » Python и сетевое оборудование
1 2 3
apt-get_me_a_beer
Там где Login failed это я пытался через питон
PooH
Я имел ввиду, не лог свича, а текст вашей с ним сессии телнета :)
apt-get_me_a_beer
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.
Вы про это?
apt-get_me_a_beer
Мне почему то кажется, что кто то добавляет к паролю еще 2 символа, так как
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.read_until('**********') именно идет поиск 10ти символов, а я пароль передаю 8ми символьный и что странно он находит именно подстроку с 10ти звездочками, а если сделать
dlink.read_until('***********') -> то есть делать поиск 11ти звезд то он в ступоре его не находит и процесс висит
И если даже передавать пароль так
dlink.write("%s" % '12345678')
Так или иначе без \r то все равно read_until находит именно подстроку с 10тью *


Что и означает что пароль передался 10ти символьный а не 8ми. Есть у Вас идеи?
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
apt-get_me_a_beer
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
Кажется просветление есть!
Вот что показывает trace
Create telnet obj ...
Create successful
admin
a
password: ********
Fail!
username:
password: ********
Этот пробел не должен быть по идеи между : и *
Или же это свойство print <some_var>, ?


Аааа нет!
2010/06/11 11:20:18 Login failed through Telnet (Username: admina, IP: 1
0.254.13.113, MAC: 00-50-FC-EE-73-6C)
Соль в логине.
PooH
У меня впечатление что свич не успевает за вами, попробуйте напихать небольших sleep между write`ами
apt-get_me_a_beer
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
А есть какая нить возможность чистить буфер между командами?
Что то типа tn.clear()
apt-get_me_a_beer
apt-get_me_a_beer
А есть какая нить возможность чистить буфер между командами?
Что то типа tn.clear()
Как оказалось метод read_until() можно сказать сам чистит буфер между командами.

    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
То есть что бы в output2 не оставались строки результата 1ой команды обязательно следует вызвать read_until после 1 команды.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB