Форум сайта python.su
1)user=“xxx”
2)password=“xxx”
3)tn = telnetlib.Telnet(host)
4)tn.set_debuglevel(1)
5)tn.read_until(“:”)
6)tn.write(user+“\n”)
7)tn.write(password+“\n”)
8)tn.write(“download firmware_fromTFTP 10.0.11.254 DES3526R6_6.00-B36.had\n”)
9)tn.write(“save\n”)
10tn.write(“logout\n”)
11)tn.read_all()
После команды 8) не выполняться следующая 9), если не выполнять загрузку то все команды выполняются. Проблемы именно с загрузкой. Лог работы:
Telnet(sint-off_spec,23): recv '\xff\xfd\x03'
Telnet(sint-off_spec,23): IAC DO 3
Telnet(sint-off_spec,23): recv '\xff\xfb\x03'
Telnet(sint-off_spec,23): IAC WILL 3
Telnet(sint-off_spec,23): recv '\xff\xfb\x01\x1b[0m\x1b[1;1H\x1b[2J\rD\r \r\n\r DE'
Telnet(sint-off_spec,23): IAC WILL 1
Telnet(sint-off_spec,23): recv 'S-3526 Fast Ethernet Switch Command Line Interface'
Telnet(sint-off_spec,23): recv '\r\n\r\r\n\r Firmware: Build '
Telnet(sint-off_spec,23): send 'xxx\n'
Telnet(sint-off_spec,23): send 'xxx'
Telnet(sint-off_spec,23): send 'download firmware_fromTFTP 10.0.11.254 DES3526R6_6.00-B36.had\n'
Telnet(sint-off_spec,23): send 'save\n'
Telnet(sint-off_spec,23): send 'logout\n'
Telnet(sint-off_spec,23): recv '5.01.B52\r\n\r Copyright(C) 2008 D-Link Co'
Telnet(sint-off_spec,23): recv 'rporation. All rights reserved.\r\n\rusername:\xff\xfe\x03'
Telnet(sint-off_spec,23): IAC DONT 3
Telnet(sint-off_spec,23): recv '\xff\xfc\x03'
Telnet(sint-off_spec,23): IAC WONT 3
Telnet(sint-off_spec,23): recv '\xff\xfc\x01'
Telnet(sint-off_spec,23): IAC WONT 1
Telnet(sint-off_spec,23): recv 'xxx\r\n\rpassword:**********'
Telnet(sint-off_spec,23): recv '\r\n\r\r\n\rDES-3526:admin#'
Telnet(sint-off_spec,23): recv 'download firmware_fromTFTP 10.0.11.254 DES3526R6_6'
Telnet(sint-off_spec,23): recv '.00-B36.had'
Telnet(sint-off_spec,23): recv '\r\n\rCommand: download firmware_fromTFTP 10.0.11.254'
Telnet(sint-off_spec,23): recv ' DES3526R6_6.00-B36.had\r\n\r\r\n\rConnecting to server.'
Telnet(sint-off_spec,23): recv '.................. '
Telnet(sint-off_spec,23): recv 'Done. \r\n\rDownload firmware...................... '
Telnet(sint-off_spec,23): recv ' 0 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 5 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 10 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 15 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 20 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 25 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 30 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 35 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 40 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 45 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 50 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 55 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 60 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 65 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 70 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 75 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 80 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 85 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 90 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 95 %'
Telnet(sint-off_spec,23): recv '\x1b[5D100 %\x1b[5DDone. Do not power off! '
Telnet(sint-off_spec,23): recv '\r\n\rDelete image........................... 0 %\x1b['
Telnet(sint-off_spec,23): recv '5D 0 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 7 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 15 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 23 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 30 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 38 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 46 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 53 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 61 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 69 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 76 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 84 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 92 %'
Telnet(sint-off_spec,23): recv '\x1b[5D100 %'
Telnet(sint-off_spec,23): recv '\x1b[5D100 %'
Telnet(sint-off_spec,23): recv '\x1b[5DDone. \r\n\rPlease wait, programming flash.......'
Telnet(sint-off_spec,23): recv '.. 0 %\x1b[5D 7 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 15 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 23 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 30 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 38 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 46 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 54 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 61 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 69 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 77 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 85 %'
Telnet(sint-off_spec,23): recv '\x1b[5D 92 %'
Telnet(sint-off_spec,23): recv '\x1b[5D100 %'
Telnet(sint-off_spec,23): recv '\x1b[5DDone. \r\n\r\r\n\rDES-3526:admin#'
Офлайн
а полный скрипт показать можно ?
Офлайн
sypper-pit
а полный скрипт показать можно ?
def dmac(host):
try:
var1 = netsnmp.Varbind('.1.3.6.1.2.1.1.1.0')
var2 = netsnmp.Varbind('.1.3.6.1.2.1.16.19.2.0')
date = netsnmp.snmpget(var1,var2, Version = 1, DestHost=host, Community='public')
res = '%s %s %s' %(date[1],date[0].split()[0],host)
if 'DES-3526' in res:
user="xxx"
password="xxx"
tn = telnetlib.Telnet(host)
tn.set_debuglevel(3)
tn.read_until(":")
tn.write(user+"\n")
tn.write(password+"\n")
tn.write("download firmware_fromTFTP 10.0.11.254 DES3526R6_6.00-B36.had\n")
time.sleep(120)
tn.write("\n")
tn.write("save\n")
tn.write("logout\n")
tn.read_all()
tn.close()
except Exception:
pass
Офлайн
хм , по идее должно работать если указывать полный путь firmware_fromTFTP
Офлайн
по пробуй это в ручном режиме через стандартный запрос telnet
Офлайн
sypper-pitВыше приведенный код рабочий, я разобрался, единственное что я не понял как сделать если это вообще возможно, отправить все команды и не ждать завершения загрузки, сохранения и так далее. Получается на прошивку коммутатора уходит 4 минуты. и так 600 штук :). D-Link не предсказуем приходиться часто обновлять. Может есть вариант как быстрее все это сделать….
по пробуй это в ручном режиме через стандартный запрос telnet
Офлайн
многопоточность, асинхронность?
Офлайн