Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 11, 2010 08:35:57

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

Там где Login failed это я пытался через питон



Офлайн

#2 Июнь 11, 2010 08:42:08

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

Я имел ввиду, не лог свича, а текст вашей с ним сессии телнета :)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Июнь 11, 2010 08:59:17

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

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.
Вы про это?



Отредактировано (Июнь 11, 2010 08:59:49)

Офлайн

#4 Июнь 11, 2010 09:07:26

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

Мне почему то кажется, что кто то добавляет к паролю еще 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ми. Есть у Вас идеи?



Отредактировано (Июнь 11, 2010 09:11:21)

Офлайн

#5 Июнь 11, 2010 09:10:37

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

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



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Июнь 11, 2010 09:23:00

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

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)
Соль в логине.



Отредактировано (Июнь 11, 2010 09:25:20)

Офлайн

#7 Июнь 11, 2010 09:31:41

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

У меня впечатление что свич не успевает за вами, попробуйте напихать небольших sleep между write`ами



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Июнь 11, 2010 11:17:55

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

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()
Спасибо за помощь.



Офлайн

#9 Июнь 11, 2010 15:34:21

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

А есть какая нить возможность чистить буфер между командами?
Что то типа tn.clear()



Офлайн

#10 Июнь 12, 2010 08:23:58

apt-get_me_a_beer
От:
Зарегистрирован: 2010-06-06
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и сетевое оборудование

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 команды.



Отредактировано (Июнь 12, 2010 08:26:12)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version