Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 13, 2010 07:12:20

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

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

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import sys
import telnetlib


def delet():
user ="adm"
password ="xxxx"
host = 'mon2-2'
try:
tn = telnetlib.Telnet(host,23,15)
tn.set_debuglevel(1)
tn.read_until(":")
tn.write(user+"\n")
tn.write(password+"\n")
tn.write("config limited_multicast_addr ports 1-50 delete multicast_range amino\n")
tn.write("config limited_multicast_addr ports 1-50 delete multicast_range cpu\n")
tn.write("config limited_multicast_addr ports 1-50 delete multicast_range deny\n")
tn.write("config limited_multicast_addr ports 1-50 delete multicast_range sw\n")
tn.write("delete multicast_range amino\n")
tn.write("delete multicast_range cpu\n")
tn.write("delete multicast_range deny\n")
tn.write("delete multicast_range sw\n")
tn.write("save\n")
tn.write("logout\n")
tn.read_all()
tn.close()
except Exception:
pass

delet()
Пример для DES-3526, DES3550, DGS-3627G. Есть еще вариант обработка в потоке если нужно выложу.



Отредактировано (Июнь 13, 2010 07:16:05)

Офлайн

#2 Авг. 18, 2011 18:18:30

DVM-Avgoor
От:
Зарегистрирован: 2011-08-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Подниму старинную тему, может кому поможет:

UserName:
Telnet(10.10.10.90,23): send '\xfe'
Telnet(10.10.10.90,23): send 'FakeUser\n'
Telnet(10.10.10.90,23): recv '\xff\xfe\x03'
Telnet(10.10.10.90,23): IAC DONT 3
Telnet(10.10.10.90,23): recv '\xff\xfc\x03'
Telnet(10.10.10.90,23): IAC WONT 3
Telnet(10.10.10.90,23): recv '\xff\xfc\x01FakeUser\n\rPassWord:'
Telnet(10.10.10.90,23): IAC WONT 1
FakeUser
PassWord:
Telnet(10.10.10.90,23): send 'parol\n'
parol

Telnet(10.10.10.90,23): recv '*'
Telnet(10.10.10.90,23): recv '****\n\r\n\rDES-3200-26:5#'
*******
tn = telnetlib.Telnet(HOST)
tn.set_debuglevel(19)
print tn.read_until('me:')
tn.write("\xfe")
tn.write("FakeUser\n")
print tn.read_until('d:')
tn.write("parol\n")
print tn.read_until('#')
Как видите я шлю \xfe (подходит кстати почти любой код, \x01 и прочие) в сторону свитча до логина, это какое-то универсальное спасение, что-ли. Если не слать этой белиберды свитч по непонятной причине считает пароль длиннее чем он есть и естественно не принимает , причем судя по дебагу и даже tcpdumpу - send ('parol\n') верный.
Такой фигни с каталистами, хп и просто цискороутерами не видел, а вот длинк на те пожалуйста.



Офлайн

#3 Сен. 2, 2011 11:48:02

Soeti
От:
Зарегистрирован: 2011-09-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

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

C read_until были аналогичные выше проблемы.

....
try:
tn = telnetlib.Telnet(Host, 23, 2)
except:
print "Error connect" + Host + "\n"
return

tn.read_eager()
tn.write(user + "\n")
tn.read_eager()
tn.write(password + "\n")
....
Так работает везде. Ждать приглашения “UserName” по сути не нужно - просто “сьедаем” весь вывод и вводим данные в нужной последовательности.



Офлайн

#4 Сен. 2, 2011 19:55:48

vvpoloskin
От:
Зарегистрирован: 2011-09-02
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Вообще, для реализации удалённого/автоматизированного управления через telnet/minicom/ssh отично подходит pyexpect. Там гораздо меньше проблем с таймингами, и с regexp он более гибок.

Для работы через web с помощью python. Над внимательнее смотреть на frontend-код. Я пробовал натравить python на две железки через web(Linksys и Huawei), там оказалось на самом деле перед отправкой данных на форму они кодировались через db64 по модифицированному алфавиту и базе. Пришлось это учитывать.



Офлайн

#5 Янв. 19, 2012 09:30:49

DVM-Avgoor
От:
Зарегистрирован: 2011-08-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Кстати, относительно оборудования dlink. Workaround нашел:

def bulk(self, cmd, opt):
pass

tn = telnetlib.Telnet()
tn.open(ip)
tn.set_option_negotiation_callback(bulk)
Вот так, если telnetlib не будет отвечать dlinkу на его IAC, все станет просто изумительно даже с read_until.



Офлайн

#6 Фев. 7, 2012 14:41:31

PPpan
От:
Зарегистрирован: 2012-02-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

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

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



Офлайн

#7 Фев. 14, 2012 09:39:36

PPpan
От:
Зарегистрирован: 2012-02-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

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

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



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version