Найти - Пользователи
Полная версия: Python и сетевое оборудование
Начало » Network » Python и сетевое оборудование
1 2 3
apt-get_me_a_beer
Есть железка 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 символа в пароле?
Все переменные приходят правильно.
Заранее спасибо!
Zubchick
а тылнета нету?
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 после ввода пароля я так и не понял, но без него не хочет логиниться ни в какую…
Попробуйте, возможно поможет.
PooH
Работал я с этой железкой, код здесь не покажу, его многовато для форума(там простенький DSL для описания работы с железками), а сценарий входа выглядит так:
1. Ждем строки “username:” c таймаутом 5 сек
2. Пишем “%s\r” % логин
3. Ждем строки “password:” c таймаутом 5 сек
4. Пишем “%s\r” % пароль и ждем 0,5 сек
Все зашли, можем команду отдавать.
apt-get_me_a_beer
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 после ввода пароля я так и не понял, но без него не хочет логиниться ни в какую…
Попробуйте, возможно поможет.
Пробовал, не помогло
apt-get_me_a_beer
PooH
Работал я с этой железкой, код здесь не покажу, его многовато для форума(там простенький DSL для описания работы с железками), а сценарий входа выглядит так:
1. Ждем строки “username:” c таймаутом 5 сек
2. Пишем “%s\r” % логин
3. Ждем строки “password:” c таймаутом 5 сек
4. Пишем “%s\r” % пароль и ждем 0,5 сек
Все зашли, можем команду отдавать.
И это не помогло!!!
Может когда я отправляю пароль через телнет вместе с \n то он его интерпретирует как символы пароля?
\
Метод write так и хочется переделать на сервере что бы он делал return buffer/

OS Ubuntu
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
apt-get_me_a_beer
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
PooH
Странно у нас это работало, может прошивка другая. А можете руками на железку зайти и лог сюда выложить?
apt-get_me_a_beer
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)
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