Источник Хабрахабр.ru, Москва
Заголовок Как и когда мы применяем автоматизацию в сети
Дата 20240928

Этим цветом    обозначаются известные системе слова и выражения, принимавшие участие в анализе данного текста, а таким    - идентифицированные, то есть соотнесенные с каким-либо объектом онтологической базы

============= Обработанный текст:
Как и когда мы применяем автоматизацию в сети

Как и когда мы применяем автоматизацию в сети

Уровень сложности

Средний

Время на прочтение

6 мин

Количество просмотров

13

Сетевые технологии * Системное администрирование• Информационные технологии » Информатика » Системное Администрирование * Cisco * Python *

Туториал

ИТ-инфраструктуры становятся все более сложными, теперь мы обычно работаем с
десятками и сотнями коммутаторов, маршрутизаторов и межсетевых экранов• Информационные технологии » Информатика » Защита информации » Компьютерная безопасность » Межсетевые экраны

• Безопасность » Компьютерная безопасность » Межсетевые экраны
.

Если нам нужно применить одну и ту же команду к нескольким устройствам, то
проще всего будет ansible.

Если нам нужно применить одну и ту же команду, но с разными параметрами, то в
этом случае Python и netmiko пригодятся.

Используя ansible, мы можем опрашивать несколько коммутаторов несколькими
разными командами и записывать вывод команд в текстовые файлы, но с Python и
netmiko мы можем объединить вывод нескольких разных команд, записав только
нужную нам информацию в один выходной CSV-файл.

Почему CSV? CSV-файл удобен, потому что мы можем открыть его в Excel, и легко
скрыть ненужные нам столбцы, сгруппировать или упорядочить по нужным нам
столбцам.

Если мы будем ежедневно создавать один такой файл со всех коммутаторов, мы
легко сможем увидеть разницу в состоянии подключенных устройств, просто открыв
два файла в редакторе Notepad• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)
++ в режиме сравнения.

Я объединил три команды, которые мы обычно используем для записи и
отслеживания состояния всех коммутаторов и всех подключенных устройств.

Вот команды:

show interface status

show mac address• Информационные технологии » URI » MAC-адрес-table

show cdp neighbor

Моя программа• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)
на Python обращается ко всем коммутаторам из набора, выполняет
все три команды и объединяет вывод всех трех команд в один файл.

Теперь нам не нужно подключаться к каждому коммутатору отдельно и выполнять
все три команды одну за другой.

Для демонстрационных целей я создал очень простую инфраструктуру, состоящую из
двух коммутаторов и нескольких подключенных устройств.

Выходной файл выглядит так

python программа• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » Операционные Системы Майкрософт » Microsoft Windows » Стандартные Приложения Windows » Блокнот (программа)

#!/usr/bin/python3 # usage " python cisco_switch_info_to_csv.py --hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts_file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts --group sw1 " define set of switches import yaml, argparse, csv,
subprocess from netmiko import ConnectHandler def parse_arguments(): # to
parse command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
-line arguments parser• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Информационные технологии » Информатика » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser
= argparse.ArgumentParser(description = '
Netmiko Script• Информационные технологии » Информатика » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки

• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки
to Connect to Routers and Run Commands ')
parser• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Информационные технологии » Информатика » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser
.add_argument('--hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts_file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
', required=True, help = ' Path to the
Ansible hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
') parser• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Информационные технологии » Информатика » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser
.add_argument('--group', required=True, help = '
Group of routers to connect to from Ansible hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
') return
parser• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Информационные технологии » Информатика » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Программное обеспечение » Языки программирования » Скриптовые Языки » Parser
.parse_args() def ping_ip• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес(ip_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес): # Use ping command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
to check if
switch alive param = '-c' # for linux os command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
= ['ping', param, '2',
ip_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес] # Build the ping command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
try: subprocess.check_output(command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
,
stderr=subprocess.STDOUT, universal_newlines=True) # Execute the ping command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

return "yes" except subprocess.CalledProcessError: return "no" ###########
Main function def main(): args = parse_arguments() # Parse command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
-line
arguments with open(args.hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts_file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
, 'r') as file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
: # Load ansible hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

in yaml format hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts_data = yaml.safe_load(file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
) global_vars =
hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts_data['all']['vars'] # Extract global variables # Extract router details
for the specified group if args.group not in hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts_data: print(f"Group
{args.group} not found in hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
.") return routers =
hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts_data[args.group]['hosts• Телекоммуникации и связь » Компьютерная сеть » Интернет » DNS » Hosts'] # Extract group of devices output_filed =
args.group + '_inter_des.csv' # output_filec = args.group + '_inter_cdp.csv' #
output_filema = args.group + '_inter_mac.csv' # STRd =
"Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост,IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес,Interface,State,Description,Vlan" # column names status
with open(output_filed, "w", newline="") as out_filed: writer =
csv.writer(out_filed) out_filed.write(STRd) out_filed.write('\n') STRc =
"Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост,IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес,Interface,New_Description" # column names cdp with
open(output_filec, "w", newline="") as out_filec: writer =
csv.writer(out_filec) out_filec.write(STRc) out_filec.write('\n') STRm =
"Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост,IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес,Interface,mac,vlan" # column names mac with
open(output_filema, "w", newline="") as out_filema: writer =
csv.writer(out_filema) out_filema.write(STRm) out_filema.write('\n') # Connect
to each switch and execute the specified commands for router_name, router_info
in routers.items(): # loop for each switch in group if
ping_ip• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес(router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост']) == "no": # check if host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост alive print( '
switch offline --------- ', router_name,' ',router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'])
continue else: print( ' switch online --------- ', router_name,'
',router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост']) de_type = '' if
global_vars['ansible_network• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост_os'] == 'ios': # check if cisco ios de_type =
'cisco_ios' netmiko_connection = { # Create Netmiko connection dictionary
'device_type': de_type, 'host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост': router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'], 'username':
global_vars['ansible_user'], 'password': global_vars['ansible_password'],
'secret': global_vars['ansible_become_password'], } connection =
ConnectHandler(**netmiko_connection) # Establish SSH connection
connection.enable() # Enter enable mode comm1 = 'show int status | begin Port'
comm2 = 'show cdp neighb | begin Device' comm3 = 'show mac addres dynam'
outputd1 = connection.send_command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
(comm1) # Execute the specified command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
if
(outputd1.replace(' ', '') == ''): print(router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'],' empty
-- router , continue with next') continue # exclude router from switches
outputd2 = connection.send_command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
(comm2) outputd31 =
connection.send_command• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
(comm3, use_textfsm=True) # mac textfsm
connection.disconnect() # Disconnect from device print(f" ------------ Output
from {router_name} ({router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост']}):") # Print the output
print(' mac textfsm ------- ', type(outputd31)) print(outputd31) # mac textfsm
print(" ------------") lines = outputd1.strip().split('\n') #### parse 'show
interface status' lines = lines[1:] for line in lines: if (line == '') or
(line.startswith("Port")): continue swi=router_name ipad• Планшеты » Apple ipad » Apple Ipad 3=
router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'] por=line[:9].replace(' ', '') # port sta =
line[29:41].replace(' ', '') # interface status connected or notconnect des =
line[10:28].replace(' ', '') # existing description vla =
line[42:47].replace(' ', '') # vlan print("switch ",swi," port ",por, 'state
',sta," Descr ",des," vlan ", vla ) STR = swi + "," + ipad• Планшеты » Apple ipad » Apple Ipad 3 + "," + por +"," +
sta +"," + des + "," + vla # +"," # with ip• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес with open(output_filed, 'a') as f:
# write to file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
f.write(STR) f.write('\n') lines1 =
outputd2.strip().split('\n') #### parse 'show cdp n' lines1 = lines1[1:] #
This correctly removes the first line (header) for line in lines1: if (line ==
'') or (line.startswith("Devic")): continue rlin1 = line[:16] dot_position =
rlin1.find('.') rlin2 = rlin1[:dot_position] # remove domain name from switch
name rlin = rlin2 + '|' + line[58:67] + '|' + line[68:] # new interface
description ndes = rlin.replace(' ', '') # remove all spaces por=line[17:33]
por1 = por[0:2]+por[3:33] # remove 3rd char from port name por=por1.replace('
', '') swi=router_name ipad• Планшеты » Apple ipad » Apple Ipad 3= router_info['ansible_host• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'] print("switch ",swi,"
port ",por, " Descr ", ndes ) STRc = swi + "," + ipad• Планшеты » Apple ipad » Apple Ipad 3 + "," + por +"," + ndes
# switch name with ip• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес with open(output_filec, 'a') as f: f.write(STRc)
f.write('\n') print(f" ------------ end") ######
--------------------------------------------- #### parse 'show mac
address• Информационные технологии » URI » MAC-адрес
-table' texfsm for entry in outputd31: # Remove square brackets from
'destination_port' values entry['destination_port'] =
entry['destination_port'][0] outputd31_sorted = sorted(outputd31, key=lambda
x: x['destination_port']) # Sort the list by 'destination_port' unique_data31
= [] ports_seen = {} # Count occurrences of each port for entry in
outputd31_sorted: port = entry['destination_port'] if port in ports_seen:
ports_seen[port] += 1 else: ports_seen[port] = 1 # Keep only ports that appear
once unique_data31 = [entry for entry in outputd31_sorted if
ports_seen[entry['destination_port']] == 1] # Output the result for entry in
unique_data31: print(entry) STRm = swi + "," + ipad• Планшеты » Apple ipad » Apple Ipad 3 + ","
+entry['destination_port'] + "," +entry['destination_address'] + "," +
entry['vlan_id'] # with open(output_filema, 'a') as f: f.write(STRm)
f.write('\n') output_filem = args.group + '_merg.csv' # mrge 2 in 1 with
open(output_filed, mode='r') as file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
: reader = csv.DictReader(file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
)
sw_inter_des_data = list(reader) # Read descr file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
into a list of dictionaries
with open(output_filec, mode='r') as file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
: reader = csv.DictReader(file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
)
sw_inter_cdp_data = list(reader) # Read cdp file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
into a list of dictionaries
with open(output_filema, mode='r') as file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
: reader = csv.DictReader(file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
)
sw_inter_mac_data = list(reader) # Read mac file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
into a list of dictionaries
cdp_lookup = { # Create a lookup dictionary for sw_inter_cdp_data based on
Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост, IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес, and Interface (row['Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'], row['IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес'],
row['Interface']): row['New_Description'] for row in sw_inter_cdp_data }
mac_lookup = { # Create a lookup dictionary for sw_inter_cdp_data based on
Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост, IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес, and Interface (row['Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'], row['IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес'],
row['Interface']): row['mac'] for row in sw_inter_mac_data } for row in
sw_inter_des_data: key = (row['Hostname• Телекоммуникации и связь » Сети передачи данных » Сетевое оборудование » Хост'], row['IP_address• Телекоммуникации и связь » Компьютерная сеть » Интернет » Протокол передачи данных » TCP/IP » IP-адрес'],
row['Interface']) row['New_Description'] = cdp_lookup.get(key, '') # Add the
New_Description to sw_inter_des_data row['mac'] = mac_lookup.get(key, '') #
Add mac with open(output_filem, mode='w', newline='') as file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
: # Write the
updated data to a new CSV file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
fieldnames = sw_inter_des_data[0].keys() writer
= csv.DictWriter(file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
, fieldnames=fieldnames) writer.writeheader()
writer.writerows(sw_inter_des_data) print("New CSV file• Информационные технологии » Информационно-коммуникационные технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Информационные технологии » Информатика » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)

• Высокие технологии » Информационные технологии и телекоммуникации » Программирование » Платформы программирования » Операционные системы » UNIX » Утилиты Unix » File (Unix)
with added
New_Description column has been created as ", args.group , '_merg.csv')
#################### Entry point of the main if __name__ == '__main__': main()

============= Итог: 9,3135 ; Информационные технологии#Информатика#Программирование #Платформы программирования#Операционные системы#UNIX#Утилиты Unix #File (Unix) 6,8420 ; Информационные технологии#URI#MAC-адрес#IP-адрес 2,9005 ; Информационные технологии#Информатика#Программирование #Платформы программирования#Операционные системы #Операционные Системы Майкрософт#Microsoft Windows #Стандартные Приложения Windows#Блокнот (программа) 2,6441 ; Информационные технологии#Информатика#Программирование #Программное обеспечение#Языки программирования#Скриптовые Языки#Parser 1,6748 ; Информационные технологии#Информатика#Системное Администрирование 1,4812 ; Информационные технологии#Информатика#Защита информации #Компьютерная безопасность#Межсетевые экраны 9,8105 ; Телекоммуникации и связь#Компьютерная сеть#Интернет#DNS#Hosts 7,6117 ; Телекоммуникации и связь#Сети передачи данных#Сетевое оборудование#Хост 6,8928 ; Телекоммуникации и связь#Компьютерная сеть#Интернет #Протокол передачи данных#TCP/IP#IP-адрес#MAC-адрес 3,6250 ; Планшеты#Apple ipad#Apple Ipad 3


Copyright © 2007-2024 ООО «RelTeam»