Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 10, 2010 21:35:57

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

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

Есть железка Dlink DES-3526 Build 5.01.B6. Хочу к ней подключиться таким методом:

def login(tn, user, password):

tn.read_until("username:")
tn.write(user + "\n")
print 'stage 1'

if password:
temp1 = tn.read_until("password:")
tn.write(password + "\n")
print 'stage 2'

output = tn.read_until("#")

print output
На выходе дает:
stage 1
stage 2
…. дальше подвисает так как не заходит и ждет чегото пока по таймауту не отваливается

Смотрим дальше (на данной железке символ пароля маркируется знаком * и пароль на ней 8ми символьный):
def login(tn, user, password):

tn.read_until("username:")
tn.write(user + "\n")
print 'stage 1'

if password:
temp1 = tn.read_until("password:")
tn.write(password + "\n")
print 'stage 2'
output = tn.read_until("**********") #Внимание!!! как я уже говорил пароль 8ми символьный а не 10ти!!!
print output
И вот что на выходе:
stage 1
stage 2
**********
….. программа успешно завершена, но если смотреть логи свитча то там видно
2010/06/10 23:17:03 Login failed through Telnet (Username: admin, IP:…………………

Если же в строке
 output = tn.read_until("********")
убрать 2 звездочки так скзаать то программа отваливается по таймауту так как нету такой строки, что и означает что пароль вбивается именно 10 а не 8 символьный

Кто мне поможет капнуть в правильную строну и понять откуда у меня лишние 2 символа в пароле?
Все переменные приходят правильно.
Заранее спасибо!



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

Офлайн

#2 Июнь 10, 2010 23:10:38

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

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

а тылнета нету?



Офлайн

#3 Июнь 10, 2010 23:40:17

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

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

apt-get_me_a_beer
…. дальше подвисает так как не заходит и ждет чегото пока по таймауту не отваливается
У меня подобная проблема была с DSL-2600. Долго ломал голову, думал что ж не так, потом внезапно (!) вот так заработало:
        dlink = telnetlib.Telnet(HOST)
dlink.read_until('Login:')
dlink.write(LOGIN + '\n')
dlink.read_until('Password:')
dlink.write(PASSWORD + '\n')
dlink.write('\n')
Зачем ему еще один \n после ввода пароля я так и не понял, но без него не хочет логиниться ни в какую…
Попробуйте, возможно поможет.



Отредактировано (Июнь 10, 2010 23:54:57)

Офлайн

#4 Июнь 11, 2010 05:42:21

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

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

Работал я с этой железкой, код здесь не покажу, его многовато для форума(там простенький DSL для описания работы с железками), а сценарий входа выглядит так:
1. Ждем строки “username:” c таймаутом 5 сек
2. Пишем “%s\r” % логин
3. Ждем строки “password:” c таймаутом 5 сек
4. Пишем “%s\r” % пароль и ждем 0,5 сек
Все зашли, можем команду отдавать.



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

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

Офлайн

#5 Июнь 11, 2010 07:10:51

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

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

Vader
apt-get_me_a_beer
…. дальше подвисает так как не заходит и ждет чегото пока по таймауту не отваливается
У меня подобная проблема была с DSL-2600. Долго ломал голову, думал что ж не так, потом внезапно (!) вот так заработало:
        dlink = telnetlib.Telnet(HOST)
dlink.read_until('Login:')
dlink.write(LOGIN + '\n')
dlink.read_until('Password:')
dlink.write(PASSWORD + '\n')
dlink.write('\n')
Зачем ему еще один \n после ввода пароля я так и не понял, но без него не хочет логиниться ни в какую…
Попробуйте, возможно поможет.
Пробовал, не помогло



Офлайн

#6 Июнь 11, 2010 08:09:59

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

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

PooH
Работал я с этой железкой, код здесь не покажу, его многовато для форума(там простенький DSL для описания работы с железками), а сценарий входа выглядит так:
1. Ждем строки “username:” c таймаутом 5 сек
2. Пишем “%s\r” % логин
3. Ждем строки “password:” c таймаутом 5 сек
4. Пишем “%s\r” % пароль и ждем 0,5 сек
Все зашли, можем команду отдавать.
И это не помогло!!!
Может когда я отправляю пароль через телнет вместе с \n то он его интерпретирует как символы пароля?
\
Метод write так и хочется переделать на сервере что бы он делал return buffer/

OS Ubuntu



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

Офлайн

#7 Июнь 11, 2010 08:15:10

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

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

Вот так попробуйте:

       
dlink = telnetlib.Telnet(HOST)
dlink.read_until('login:', 5)
dlink.write("%s\r" % LOGIN)
dlink.read_until('password:', 5)
dlink.write("%s\r" % PASSWORD)
time.sleep(0.5)
Сейчас нет железки под рукой, проверить, но помнится login и password с маленькой буквы и, обращаю внимание, не \n а \r



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

Офлайн

#8 Июнь 11, 2010 08:19:49

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

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

PooH
Вот так попробуйте:
       
dlink = telnetlib.Telnet(HOST)
dlink.read_until('login:', 5)
dlink.write("%s\r" % LOGIN)
dlink.read_until('password:', 5)
dlink.write("%s\r" % PASSWORD)
time.sleep(0.5)
Сейчас нет железки под рукой, проверить, но помнится login и password с маленькой буквы и, обращаю внимание, не \n а \r
import time
# Controller action
# tn Telnet obj
from telnetlib import Telnet

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" % 'xxxxx')
time.sleep(0.5)
нет, свитч все пишет Login failed



Офлайн

#9 Июнь 11, 2010 08:26:14

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

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

Странно у нас это работало, может прошивка другая. А можете руками на железку зайти и лог сюда выложить?



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

Офлайн

#10 Июнь 11, 2010 08:34:55

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

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

PooH
Странно у нас это работало, может прошивка другая. А можете руками на железку зайти и лог сюда выложить?
473   2010/06/11 10:18:47  Successful login through Telnet (Username: admin, IP
: 10.254.13.113, MAC: 00-50-FC-EE-73-6C)
7472 2010/06/11 10:18:41 Login failed through Telnet (Username: admin, IP: 10
.254.13.113, MAC: 00-50-FC-EE-73-6C)
7471 2010/06/11 10:18:39 Login failed through Telnet (Username: admin, IP: 10
.254.13.113, MAC: 00-50-FC-EE-73-6C)
7470 2010/06/11 10:18:38 Login failed through Telnet (Username: admin, IP: 10
.254.13.113, MAC: 00-50-FC-EE-73-6C)
7469 2010/06/11 10:18:35 Logout through Telnet (Username: admin, IP: 10.254.1
3.113, MAC: 00-50-FC-EE-73-6C)
7468 2010/06/11 10:18:22 Successful login through Telnet (Username: admin, IP
: 10.254.13.113, MAC: 00-50-FC-EE-73-6C)
7467 2010/06/11 10:18:14 Login failed through Telnet (Username: admin, IP: 10
.254.13.113, MAC: 00-50-FC-EE-73-6C)
7466 2010/06/11 10:17:44 Login failed through Telnet (Username: admin, IP: 10
.254.13.113, MAC: 00-50-FC-EE-73-6C)
7465 2010/06/11 10:08:40 Logout through Telnet (Username: admin, IP: 10.254.1
3.113, MAC: 00-50-FC-EE-73-6C)
7464 2010/06/11 10:08:08 Successful login through Telnet (Username: admin, IP
: 10.254.13.113, MAC: 00-50-FC-EE-73-6C)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version