Форум сайта python.su
Здравствуйте помогите реализовать задуманное
Python 3.9:
OS - Windows 10
Задача подключатся и сетевое оборудование с помощью скрипта, есть 2 варианта портов и 4 варианта паролей имя пользователя всегда admin
import telnetlib import time import random import string import datetime from colorama import init, Back, Style, Fore start_time = time.time() start_time = time.time() adress = input('Введите адрес обьекта ---- ') iprouter = input('Введите IP роутера ------- ') user = 'admin' print('--- Пользователь admin ---') 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) now = datetime.datetime.now() nowt = (now.strftime('%d-%m-%Y %H:%M')) init() #Автологин tn = telnetlib.Telnet(iprouter, 23,) 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+'* * * * * * * * * * * * * * *') tn.read_until(b'(config)> ', timeout=2) tn.write('show version'.encode('ascii') + b'\n') time.sleep(5) #Собираем инфу из роутера tn.read_until(b"(config)> ", timeout=2) tn.write('show version'.encode('ascii') + b"\n") time.sleep(5) # Парсим вывод комманды 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: i3 = out.index('device:') model = (out[i3 + 1])+' '+(out[i3 + 2]).strip('\r\n') else: model = "неизвестная модель" i2 = out.index('release:') release = (out[i2 + 1]).strip('\r\n') print("* * * * * * *Данные о модели и прошивке получены ---"+Fore.GREEN+" Успех!!!"+Fore.RESET+"* * * * * * * * * * * * * * *") 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') else: des = 'Подключение VPN не настроенно' print("* * * * * * *Сбор данных о VPN --------------------"+Fore.GREEN+" Успех!!!"+Fore.RESET+"* * * * * * * * * * * * * * *") # Сбор Серийного номера tn.read_until(b"(config)> ", timeout=2) tn.write('show defaults'.encode('ascii') + b"\n") time.sleep(15) 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('utf-8') + b"\n") time.sleep(5) out3 = tn.read_very_eager().decode('utf-8') out3 = out3.split(' ') if 'mac:' in out3: i6 = out3.index('mac:') mac = (out3[i6 + 1]).strip('\r\n') else: mac = 'Не удалось получить mac' print("* * * * * * *Данные о Serial и MAC получены -------"+Fore.GREEN+" Успех!!!"+Fore.RESET+"* * * * * * * * * * * * * * *") outlog = (nowt+";"+iprouter+";"+loginOffice+";"+PassOffice+";"+VPNip+";"+Subnet+";"+IPreg+";"+pas+";"+model+";"+release+";"+sn+";"+mac+";"+des+";"+adress+"\n") #Запись данных в файл handle = open("output_log.csv", "a") handle.write (outlog) handle.close()
Отредактировано WiriNCROSS (Март 23, 2021 07:10:34)
Офлайн
WiriNCROSSМожно. Но ты лучше поставь Linux, потом поучись программировать. И тогда всё получится. В данном случае ты даже эту простейшую программку написать не в состоянии. Надо это признать.
Можно ли сделать так
Офлайн
Спасибо за совет, но вместо того чтобы тешить свое ЧСВ Лучше бы показали как надо сделать, толку от этого для меня было бы больше
Офлайн
WiriNCROSSДа сомнительно как-то, что толк из тебя вообще выйдет какой-то. Когда нужно немного пошевелить пальцем, ты уже начинаешь что-то мямлить мол “покажите, расскажите”. А ведь это самые азы. Что же начнётся, когда реально надо будет тренироваться часами? Знаешь, это как в классических фильмах про кунг-фу: если ученик не может вёдра с водой пронести по доске, наколоть дров там и тому подобное, то мастер с длинной бородой практически молча посылает его на все четыре стороны.
Лучше бы показали как надо сделать, толку от этого для меня было бы больше
Офлайн
Меня всегда поражают такие люди как вы! Если вы не можете ничего по делу сказать оставьте свое словоблудие для других людей, и не пишите больше в эту ветку, пожалуйста.
Отредактировано WiriNCROSS (Март 22, 2021 11:47:54)
Офлайн
Почему вы код в теги не обрамляете?Вас самого не смущают вот эти марсианские кавычки
“output_log.csv”,
WiriNCROSS
Можно ли сделать так чтобы скрипт перебирал сначала 2 порта для подключения 23 и 48888 и после удачного подключения начинал перебирать пароли 4шт
WiriNCROSS
Лучше бы показали как надо сделать, толку от этого для меня было бы больше
Офлайн
xam1816
Спасибо код поправил, на вопрос что означает каждая строчка в моем коде отвечаю что да
Офлайн
WiriNCROSS
на вопрос что означает каждая строчка в моем коде отвечаю что да
model = (out)+' '+(out)+' '+(out).strip('\r\n\r\n(config)>')
out = out.split(' ') if 'description:' in out: i1 = out.index('description:') model = (out)+' '+(out)+' '+(out).strip('\r\n\r\n(config)>')
Офлайн
Видимо при замене “ ” на ‘ ’ случайно удалил часть кода, сейчас все поправил, а так эта строка загоняет данные о модели сетевого оборудования в переменную model из вывода образованного командой show version.
Отредактировано WiriNCROSS (Март 23, 2021 07:16:36)
Офлайн
WiriNCROSSОпиши задачу. Этот говнокод, который ты взял неизвестно где (очень похож на индусский код с просто переведёнными на русский фразами) можешь выкидывать спокойно.
Здравствуйте помогите реализовать задуманное
WiriNCROSSНапример, вот в этой строке человек явно не знает, как метод .strip() работает, поэтому наугад пишет какую-то чушь. Это мы даже про круглые скобки не говорим вокруг индексирования элементов. Настолько глубок уровень его идиотизма - очевидно, что он ни одного материала по питону не прочитал и сразу писать начал, не зная также и других языков программирования.model = (out[i1 + 1])+' '+(out[i1 + 2])+' '+(out[i1 + 3]).strip('\r\n\r\n(config)>')
>>> 'abc'.strip('\r\n\r\n(config)>') 'ab' >>>
Отредактировано py.user.next (Март 23, 2021 22:09:12)
Офлайн