Форум сайта python.su
#!/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()
Отредактировано (Июнь 13, 2010 07:16:05)
Офлайн
Подниму старинную тему, может кому поможет:
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('#')
Офлайн
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")
....
Офлайн
Вообще, для реализации удалённого/автоматизированного управления через telnet/minicom/ssh отично подходит pyexpect. Там гораздо меньше проблем с таймингами, и с regexp он более гибок.
Для работы через web с помощью python. Над внимательнее смотреть на frontend-код. Я пробовал натравить python на две железки через web(Linksys и Huawei), там оказалось на самом деле перед отправкой данных на форму они кодировались через db64 по модифицированному алфавиту и базе. Пришлось это учитывать.
Офлайн
Кстати, относительно оборудования dlink. Workaround нашел:
def bulk(self, cmd, opt):
pass
tn = telnetlib.Telnet()
tn.open(ip)
tn.set_option_negotiation_callback(bulk)
Офлайн
Странно у нас это работало, может прошивка другая. А можете руками на железку зайти и лог сюда выложить.
Офлайн
У меня впечатление что свич не успевает за вами, попробуйте напихать небольших rest между write`ами.
Офлайн