можно создать любой другой список устройств в любом файле и например txt тоже, потом открывать данный файл из python netmiko и брать построчно имя устройства и ip адрес устройства, и python программа будет конектиться последовательно к каждому. потребуется модификация программы.
и ансибл не обязателен для запуска моей программы.
Как ваш скрипт опрашивает устройства ? скрипт коннектится к каждому устройству из списка по SSH,
это делают команды netmiko_connection , скрипт запускает обычные команды "show interface status" и др и получает вывод этих команд в виде текстовой переменной Python и далее парсит.
Откуда получает список устройств - в данном случае я использую ansible hosts файл в формате yaml, и из этого файла беру группу устройств. поскольку у меня уже был этот файл со всеми устройствами и со многими группами. конечно можно сделать любой другой список
и где нужно запускать скрипт , чтоб опросить все подсети? это должен быть админ линукс бастион хост, откуда все менеджмент подсети должны быть доступны, откуда вы можете соединиться со всеми устройствами по SSH , у меня на линукс бастион хост уже был установлен ансибл и поэтому там же я стал запускать python netmiko. но если запускать только python netmiko без ансибл то возможно и из виндоус
дайте мне знать какие еще несколько cisco show комманд можно объединить в одну на группе устройств
для таких простых случаев спрашиваете chatgpt и он пишет программу на python, но возможно и на VBA тоже умеет
import os
from datetime import datetime
# Specify the output file path
output_file = "C_drive_files_info.txt"
# Open the output file in write mode
with open(output_file, "w") as f:
# Walk through all the files and directories in C: drive
for root, dirs, files in os.walk("C:\\"):
for file in files:
# Get full file path
file_path = os.path.join(root, file)
try:
# Get file creation time
creation_time = os.path.getctime(file_path)
creation_time = datetime.fromtimestamp(creation_time).strftime('%Y-%m-%d %H:%M:%S')
# Get file size
file_size = os.path.getsize(file_path)
# Write file information to the output file
f.write(f"File: {file_path}\n")
f.write(f"Creation Time: {creation_time}\n")
f.write(f"Size: {file_size} bytes\n\n")
except Exception as e:
# If there's an error (e.g., permission error), log it
f.write(f"Error processing file {file_path}: {str(e)}\n\n")
print("File information saved to", output_file)
обычная ситуация. вам звонят и говорят что принтер не работает. и хорошо если сообщат мак адрес принтера. вы начнете искать по мак адресу во всех свичах и не найдете если патч корд не подключен.
далее вы начнете искать в всех текстовых файлах мак адресов если у вас есть сохраненные.
но вам могут сообщить только имя принтера. придется искать по имени IP адрес, потом искать мак адрес если есть сохраненные файлы со всех свичей.
в моем случае вся информация в одном файле, что ускорит поиск
да. в случае дебага и поиска неисправности моя программа может ускорить поиск. и если по расписанию программа запускается и сохраняет этот файл, всегда будет полезно сравнить а как работал данный принтер вчера? и почему принтер сегодня не работает
в одном файле видеть все свичи и все порты. вместо того чтобы подключаться к каждому и запускать три команды последовательно
здесь у меня три команды для примера. на самом деле можно добавить столбцы с номером телефона, вендор, ошибки на порту, имя сервера, имя пользователя итд.
кстати если заплатить много денег, купить лицензии и сервера, потом настроить сервера Cisco Catalist Center, то можно будет обращаться к серверу по API а сервер будет обращаться к свичу по CLI и сервер будет конвертировать CLI выход в API
всегда есть много разных решений. я не против вашего решения. если у вас есть пример как запросить по SNMP и все выходные данные собрать в один файл. поделитесь.
пожалуйста, дайте мне знать почему не интересен топик? нужна миграция с хуавея или на хуавей?
можно создать любой другой список устройств в любом файле и например txt тоже, потом открывать данный файл из python netmiko и брать построчно имя устройства и ip адрес устройства, и python программа будет конектиться последовательно к каждому. потребуется модификация программы.
и ансибл не обязателен для запуска моей программы.
Как ваш скрипт опрашивает устройства ? скрипт коннектится к каждому устройству из списка по SSH,
это делают команды netmiko_connection , скрипт запускает обычные команды "show interface status" и др и получает вывод этих команд в виде текстовой переменной Python и далее парсит.
Откуда получает список устройств - в данном случае я использую ansible hosts файл в формате yaml, и из этого файла беру группу устройств. поскольку у меня уже был этот файл со всеми устройствами и со многими группами. конечно можно сделать любой другой список
здесь есть пример https://habr.com/ru/articles/830558/
и где нужно запускать скрипт , чтоб опросить все подсети? это должен быть админ линукс бастион хост, откуда все менеджмент подсети должны быть доступны, откуда вы можете соединиться со всеми устройствами по SSH , у меня на линукс бастион хост уже был установлен ансибл и поэтому там же я стал запускать python netmiko. но если запускать только python netmiko без ансибл то возможно и из виндоус
дайте мне знать какие еще несколько cisco show комманд можно объединить в одну на группе устройств
в моем случае для мак адресов вывод
use_textfsm=True
оказался полезным, но не для CDP и не для "interface status"выбор инструмента остаётся за вами.
python лучший выбор на мой взгляд. он универсален и прост. в то же время есть много готовых библиотек.
например если у вас будет CSV файл с мак адресами то на python есть готовая библиотека которая выдает вендора по мак адресу. в VBA такого нет.
для таких простых случаев спрашиваете chatgpt и он пишет программу на python, но возможно и на VBA тоже умеет
бесперебойного питания для сетевого оборудования нет. это не ко мне вопрос. у вас нет гарантии что вы не встретите такое в своей жизни.
у нас в одной компании был мониторинг. на аутсорсе. у вас нет гарантии что вы не встретите такое в своей жизни. они мониторили какие то устройства.
электрики проводили согласованные работы.
отключали несколько зданий и снова подключили.
здесь конечно многие люди рассмеются " Принтер и другие устройства должны быть в CMDB, с актуальной информацией "
В обычной ситуации зачем это делать?
есть много обычных ситуаций.
например электрики проводили согласованные работы.
отключали несколько зданий и снова подключили.
а мне нужно достоверно установить что состояние сети вернулось в исходное.
а значит все порты, все мак адреса, все CDP вернулись в исходное состояние.
можно конечно просмотреть сотню другую текстовых файлов и сравнить с предыдущими файлами.
в моем случае нотепад++ и плагин compare
и сразу цветные строки показывают разницу.
Принтер и другие устройства должны быть в CMDB, с актуальной информацией куда он подключен. ?
не знаю где такое есть. тогда моя программа может посылать всю информацию в CMDB, не только принтера но все телефоны, видеокамеры, лаптопы и пр.
архитектура сети "правильная", с этим вопросов нет.
но при выполнении любых работ я лично раньше сохранял все текстовые файлы до и после.
например даже при заливке нового софта на свичи.
теперь я сохраняю все текстовые файлы плюс один файл до и после выполнения работ.
но сравниваю только один файл
я применяю textfsm для мак адресов
connection.send_command(comm3, use_textfsm=True)
обычная ситуация. вам звонят и говорят что принтер не работает. и хорошо если сообщат мак адрес принтера. вы начнете искать по мак адресу во всех свичах и не найдете если патч корд не подключен.
далее вы начнете искать в всех текстовых файлах мак адресов если у вас есть сохраненные.
но вам могут сообщить только имя принтера. придется искать по имени IP адрес, потом искать мак адрес если есть сохраненные файлы со всех свичей.
в моем случае вся информация в одном файле, что ускорит поиск
да. в случае дебага и поиска неисправности моя программа может ускорить поиск. и если по расписанию программа запускается и сохраняет этот файл, всегда будет полезно сравнить а как работал данный принтер вчера? и почему принтер сегодня не работает
в одном файле видеть все свичи и все порты. вместо того чтобы подключаться к каждому и запускать три команды последовательно
здесь у меня три команды для примера. на самом деле можно добавить столбцы с номером телефона, вендор, ошибки на порту, имя сервера, имя пользователя итд.
кстати если заплатить много денег, купить лицензии и сервера, потом настроить сервера Cisco Catalist Center, то можно будет обращаться к серверу по API а сервер будет обращаться к свичу по CLI и сервер будет конвертировать CLI выход в API
всегда есть много разных решений. я не против вашего решения. если у вас есть пример как запросить по SNMP и все выходные данные собрать в один файл. поделитесь.
" нормальный json или хотя бы xml "
json нужен когда данные передаются с сервера на сервер. например с бакенда на фронтенд.
В моем случае это не требуется. в моем случае мне нужна удобочитаемость. CSV файл открывается в Excel. JSON тоже открывется в Excel, но зачем?
Конфиги Cisco можно хранить очень многими способами. Но моя статья не об этом.