0
0 комментариев

Задача опросить множество роутеров

есть csv таблица

Адрес;WAN IP;VPN IP;User;password
Адрес 1;10.1.1.1;192.168.1.1;admin;123
Адрес 2;10.1.1.2;192.168.1.2;admin;123
Адрес 3;10.1.1.3;192.168.1.3;admin;123
Адрес 4;10.1.1.4;192.168.1.4;admin;123
Адрес 5;10.1.1.5;192.168.1.5;admin;123
Адрес 6;10.1.1.6;192.168.1.6;admin;123
Адрес 7;10.1.1.7;192.168.1.7;admin;123

Нужно подставить эти данные в переменные в скрипте и опросить все роутеры пока что за один запуск скрипта можно опросить только один роутер а это очень затратно по времени потому что роутеров больше сотни

import telnetlib
import time
import datetime

while True:

now = datetime.datetime.now()
nowt = (now.strftime(«%d-%m-%Y %H:%M»))

adress =’Адрес 1′
WANip = ‘192.168.1.1’
VPNip = ‘192.168.10.1’
user = ‘admin’
password = ‘123’
#Автологин
tn = telnetlib.Telnet(WANip)
tn.read_until(b»Login: «, timeout=2)
tn.write(user.encode(‘ascii’) + b»\n»)
tn.read_until(b»Password: «, timeout=2)
tn.write(password.encode(‘ascii’) + b»\n»)
tn.read_until(b»(config)> «, timeout=1)
#Собираем инфу из роутера
tn.read_until(b»(config)> «, timeout=2)
tn.write(‘show version’.encode(‘ascii’) + b»\n»)
time.sleep(2)
# Сбор модели
out = tn.read_very_eager().decode(‘ascii’)
out = out.split(‘ ‘)
if ‘description:’ in out:
i1 = out.index(‘description:’)
model = (out[i1 + 1])+’ ‘+(out[i1 + 2])+’ ‘+(out[i1 + 3]).strip(‘\r\n\r\n(config)>’)
elif ‘device:’ in out:
i2 = out.index(‘device:’)
model = (out[i2 + 1])+’ ‘+(out[i2 + 2]).strip(‘\r\n’)
else:
model = «неизвестная модель»
i3 = out.index(‘release:’)
release = (out[i3 + 1]).strip(‘\r\n’)

tn.read_until(b»(config)> «, timeout=2)
tn.read_until(b»(config)> «, timeout=2)
tn.write(‘show interface PPTP0’.encode(‘ascii’) + b»\n»)
time.sleep(2)
# Сбор инфы по VPN
out1 = tn.read_very_eager().decode(‘utf-8’)
out1 = out1.split(‘ ‘)
if ‘description:’ in out1:
i4 = out1.index(‘description:’)
des = (out1[i4 + 1]).strip(‘\r\n’)
else:
des = ‘Подключение VPN не настроенно’
# Сбор Серийного номера
tn.write(‘show defaults’.encode(‘ascii’) + b»\n»)
time.sleep(6)
out2 = tn.read_very_eager().decode(‘ascii’)
out2 = out2.split(‘ ‘)
if ‘serial:’ in out2:
i5 = out2.index(‘serial:’)
sn = (out2[i5 + 1]).strip(‘\r\n’)
else:
sn = ‘В FW нет serial’
#Сбор MAC Адреса
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘show interface ISP’.encode(‘ascii’) + b»\n»)
time.sleep(2)
out3 = tn.read_very_eager().decode(‘ascii’)
out3 = out3.split(‘ ‘)
i6 = out3.index(‘mac:’)
mac = (out3[i6 + 1]).strip(‘\r\n’)
#Сбор конфига
tn.write(‘show running-config’.encode(‘ascii’) + b»\n»)
time.sleep(2)
out4 = tn.read_very_eager().decode(‘ascii’)
out4 =out4.split(‘\r\n’)
#Запись данных в файл (Buckup config)
handle = open(«{}.txt».format(WANip).encode(‘ascii’), «w»)
for l in out4:
handle.write (l+’\n’)
handle.close()
#Запись данных в файл (Информация)
handle = open(«information.txt», «a»)
handle.write (‘\n’+adress+’;’+nowt+’;’+WANip+’;’+VPNip+’;’+model+’;’+release+’;’+sn+’;’+mac+’;’+des+’;’+’\n’)
handle.close()

pass

Еще одна проблема которую я вижу если к одному из роутеров не удастся подключится (иногда не настроен доступ на роутер по телнет ) то скрипт останавливается

То есть имеем 2 проблемы

  1. Чтение из csv таблицы
  2. В случае ошибки подключения чтобы скрипт не крашился
Решенный вопрос
Добавить комментарий