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

Python 3.8 Windows

Подскажите пожалуйста есть скрипт он логически разделен на несколько частей настройка и сбор информации

За помощь в написании спасибо stud_55@mail.ru

import telnetlib
import time
import random
import string
from colorama import init, Back, Style, Fore

start_time = time.time()

iprouter = input(‘Введите IP роутера ‘)
user = input(‘Введите имя пользователя ‘)
password = input(‘Введите пароль ‘)
loginOffice = input(‘Введите логин от Office ‘)
PassOffice = input(‘Введите пароль от Office ‘)
VPNip = input(‘Введите VPNip Office ‘)
Subnet = input(‘Введите Подсеть объекта ‘)
IPserv =’.’.join(Subnet.split(‘.’)[:-1]) +’.’+ str(int(Subnet.split(‘.’)[-1]) + 1)
IPreg = ‘.’.join(Subnet.split(‘.’)[:-1]) +’.’+ str(int(Subnet.split(‘.’)[-1]) + 27)

init()

#Рандомизатор пароля
def randomStringDigits(stringLength=8):
lettersAndDigits = string.ascii_letters + string.digits
return ».join(random.choice(lettersAndDigits) for i in range(stringLength))
print(«* * * * * * *Новый пароль сгенерирован»)

pas = (randomStringDigits(8))

#Запись данных в файл
handle = open(‘buckuppas.txt’, ‘a’)
handle.write (nowt+’;’+pas+’;»\n’)
handle.close()

#Автологин
tn = telnetlib.Telnet(iprouter)
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)
print(«* * * * * * *Подключение к ротеру —————-«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

#Создание PPTP Подключения к Офису
tn.write(‘interface PPTP0’.encode(‘ascii’) + b»\n»)

a = [‘description Office’,
‘role misc’,
‘peer j6.office.ru’,
‘no ipv6cp’,
‘lcp echo 30 3’,
‘ipcp default-route’,
‘ipcp name-servers’,
‘ipcp dns-routes’,
‘ccp’,
‘security-level public’,
‘authentication identity {}’.format(loginOffice),
‘authentication password {}’.format(PassOffice),
‘encryption mppe’,
‘ip dhcp client dns-routes’,
‘ip dhcp client name-servers’,
‘ip global 16383’,
‘ip tcp adjust-mss pmtu’,
‘connect’,
‘up’]
for s in a:
tn.read_until(b»(config-if)> «, timeout=1)
time.sleep(1)
tn.write(s.encode(‘ascii’) + b»\n»)
print(«* * * * * * *Создание VPN подключения ————«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

# Настройка маршрутизации для PPTP0
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘ip route 192.168.0.0 255.255.0.0 {0} PPTP0 auto 100’.format(VPNip).encode(‘ascii’) + b»\n»)
print(«* * * * * * *Настройка Маршрутизации для VPN —-«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)
# Правило переадресации с VPN ip на IP сервера
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘ip static tcp PPTP0 3389 {0} 3389 !Connection to server’.format(IPserv).encode(‘ascii’) + b»\n»)
print(«* * * * * * *Настройка переадресации для VPN —-«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

# Правило переадресации с IP провайдера на видеорегистратор
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘ip static tcp ISP 34567 {0} 34567 !SVN’.format(IPreg).encode(‘ascii’) + b»\n»)
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘ip static tcp ISP 554 {0} 554 !RTSP’.format(IPreg).encode(‘ascii’) + b»\n»)
print(«* * * * * * *Настройка переадресации для SVN —-«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

# Правила DNS для PPTP0
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘ip name-server 192.168.0.5 «dns office» on PPTP0’.encode(‘ascii’) + b»\n»)
print(«* * * * * * *Настройка DNS для PPTP ————-«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

# Правила межсетевого экрана PPTP0
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘access-list _WEBADMIN_PPTP0’.encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-acl)> «, timeout=1)
tn.write(‘permit tcp 192.168.0.0 255.255.0.0 {0} 255.255.255.224’.format(Subnet).encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-acl)> «, timeout=1)
tn.write(‘permit icmp 192.168.0.0 255.255.0.0 {0} 255.255.255.224’.format(Subnet).encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-acl)> «, timeout=1)
tn.write(‘exit’.encode(‘ascii’) + b»\n»)
print(«* * * * * * *Настройка ACL для PPTP ————-«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

# Правила межсетевого экрана ISP подключения
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘access-list _WEBADMIN_ISP’.encode(‘ascii’) + b»\n»)
b = [‘permit tcp 192.168.10.1 255.255.255.255 0.0.0.0 0.0.0.0’,
‘permit icmp 192.168.10.1 255.255.255.255 0.0.0.0 0.0.0.0’,
‘permit tcp 192.168.10.2 255.255.255.255 0.0.0.0 0.0.0.0’,
‘permit icmp 192.168.10.2 255.255.255.255 0.0.0.0 0.0.0.0’,
‘permit icmp 192.168.10.2 255.255.255.255 0.0.0.0 0.0.0.0’,]
for s in b:
tn.read_until(b»(config-acl)> «, timeout=1)
time.sleep(1)
tn.write(s.encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-acl)> «, timeout=1)
tn.write(‘exit’.encode(‘ascii’) + b»\n»)
print(«* * * * * * *Настройка ACL для ISP —————«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

#Отключение WiFi
#Отключение 2.4Ghz
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘interface WifiMaster0/AccessPoint0’.encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-if)> «, timeout=1)
tn.write(‘down’.encode(‘ascii’) + b»\n»)
tn.write(‘exit’.encode(‘ascii’) + b»\n»)
print(«* * * * * * *WiFi 2.4GHz отключен —————«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)
#Отключение 5Ghz
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘interface WifiMaster1/AccessPoint0’.encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-if)> «, timeout=1)
tn.write(‘down’.encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-if)> «, timeout=1)
tn.write(‘exit’.encode(‘ascii’) + b»\n»)
print(«* * * * * * *WiFi 5GHz отключен ——————«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)

# Смена пароля администратора
tn.read_until(b»(config)> «, timeout=1)
tn.write(‘user admin’.encode(‘ascii’) + b»\n»)
tn.read_until(b»(config-user)> «, timeout=1)
tn.write(‘password {}’.format(pas).encode(‘ascii’) + b»\n»)
print(«* * * * * * *Пароль администратора изменен ——«+Fore.GREEN+» Успех!!!»+Fore.RESET+»* * * * * * * * * * * * * * *»)
#Собираем инфу из роутера
tn.read_until(b»(config)> «, timeout=2)
tn.write(‘show version’.encode(‘ascii’) + b»\n»)
time.sleep(2)
# Парсим вывод комманды show version
out = tn.read_very_eager().decode(‘ascii’)
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:
i3 = out.index(‘device:’)
model = (out[i3 + 1]).strip(‘\r\n’)
else:
model = «неизвестная модель»
i2 = out.index(‘release:’)
release = (out[i2 + 1]).strip(‘\r\n’)

#Парсим вывод инфы из PPTP0
tn.read_until(b»(config)> «, timeout=2)
tn.write(‘show interface PPTP0’.encode(‘ascii’) + b»\n»)
time.sleep(2)
out1 = tn.read_very_eager().decode(‘ascii’)
out1 = out1.split(‘ ‘)
if ‘description:’ in out1
i4 = out1.index(‘description:’)
des = (out1[i4 + 1]).strip(‘\r\n\r\n’)
else
des = «Подключение VPN не настроено»

#Запись данных в файл
handle = open(‘output.txt’, ‘a’)
handle.write (nowt+’;’+iprouter+’;’+VPNip+’;’+Subnet+’;’+IPreg+’;’+loginOffice+’;’+PassOffice’;’+model+’;’+release+’;’+des+’;’+’\n’)
handle.close()

print(«* * * * * * *Настройка закончена (» + Back.RED + «НЕ ЗАБУДТЕ ЗАПИСАТЬ ПАРОЛЬ ОТ РОУТЕРА!!!»+ Back.RESET +»)* * * * * * *»)
print(«»)
print(«Версия прошивки»+» —————— «+ Fore.GREEN + release + Fore.RESET)
print(«»)
print(«Модель Keenetic»+» —————— «+ Fore.GREEN + model + Fore.RESET)
print(«»)
print(«Дескриптор PPTP0″+» —————- «+ Fore.GREEN + des + Fore.RESET)
print(«»)
print («Пароль пользователя admin»+» ——- «+ Back.RED + pas + Back.RESET)
print(«»)
print(» Настройка выполнена за»)
print(«— %s seconds —» % (time.time() — start_time))

Хотелось бы создать меню взаимодействия с блоками

Что то типа того

1. Если хотите провести полную настройку 1

(пользователь нажимает цифру 1 в таком случае скрипт отработает от начала до конца)

2. Если хотите установить правила для ISP 2

(Нажимает цифру 2 и отрабатывает блок # Правила межсетевого экрана ISP подключения)

3. Получить информацию с сетевого оборудования 3

(Нажимает цифру 3 и отрабатывают блоки #Собираем инфу из роутера; #Запись данных в файл)

4. Выход

после выполнения любого из пунктов меню скрипт возвращается в начало

Решенный вопрос
Добавить комментарий