Python

В чем разница между Парамико и Нетмико?

В чем разница между Парамико и Нетмико?

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

Как упоминалось в других моих учебных пособиях, программисты ленивы и всегда стремятся повысить эффективность, делая при этом минимум работы 🙂 - и когда дело доходит до автоматизации сетевых проблем, многие часто ухватываются за этот шанс.

В сегодняшнем кратком руководстве я познакомлю вас с автоматизацией SSH с помощью двух популярных библиотек Python: Парамико а также Нетмико. Мы создадим простые скрипты Python с использованием двух библиотек для автоматизации SSH и взаимодействия с сетевыми устройствами.

Я выбрал этот подход, потому что руководство, в основном сосредоточенное на различиях между Paramiko и Netmiko, было бы слишком коротким - простой таблицы было бы достаточно - и не конкретным. Приняв такой подход, вы сможете лучше экспериментировать с ними и увидеть, что делает что и как.

Давайте начнем:

Что такое Парамико?

Официальный сайт определяет Paramiko следующим образом:

«Парамико - это Питон (2.7, 3.4+) реализация протокола SSHv2, обеспечивающего как клиентскую, так и серверную функциональность.”

Я надеюсь это было ясно. По сути, это означает Paramiko - это библиотека Python для взаимодействия с SSH.

Сейчас:

Когда мы хотим войти на сервер, мы знаем, что переходим в терминал-cmd, xterm, MobaXterm или просто в Gnome Terminal-login, а затем выполняем команды.

Посмотрим, как Парамико может с этим помочь.

Как установить Paramiko

Чтобы использовать Paramiko, нам необходимо его установить. У вас должен быть установлен Python - желательно Python 2 - на вашем компьютере. Используя pip, введите команду ниже, чтобы установить Paramiko.

sudo pip установить Paramiko
Python -m pip install paramiko

Если вы хотите собрать исходный код, обратитесь к официальному репозиторию Paramiko GitHub, используя предоставленный ресурс:

https: // github.com / paramiko / paramiko

Подключение к SSH с помощью Paramiko

Чтобы подключиться к SSH с помощью Paramiko, мы используем метод connect (), для которого требуется параметр hostname - он также поддерживает другие параметры, но, поскольку они нам не нужны, мы можем их пока игнорировать.

connect (hostname, port = 22, username = None, password = None, pkey = None, key_filename = None, timeout = None, allow_agent = True, look_for_keys = True, compress = False, sock = None, gss_auth = False, gss_kex = False, gss_deleg_creds = True, gss_host = None, banner_timeout = None, auth_timeout = None, gss_trust_dns = True, passphrase = None, disabled_algorithms = None)

Используя эту функцию, которая доступна в paramiko. Клиент.SSHClient.connect (), подключается к указанному имени хоста и аутентифицирует его. Целевая система проверяется на соответствие существующим локальным системным ключам (доверенным).

Если у вас есть конкретный файл хоста, вы можете использовать метод load_host_keys () и настроить SSH-клиент Paramiko для добавления любого неизвестного хоста в paramiko.AutoAddPolicy (). Если вы используете клиент в ненадежных системах, избегайте использования paramiko.AutoAddPolicy.

Подключение SSH с паролем

Из метода подключения мы видим, что у нас есть параметры имени пользователя и пароля, которые мы можем использовать для подключения к системе. Рассмотрим приведенный ниже код для подключения SSH с помощью имени пользователя и пароля.

из утилиты импорта paramiko, SSHClient, AutoAddPolicy
клиент = SSHClient ()
клиент.load_system_host_keys ()
клиент.load_host_keys ("/ home / linuxhint /.ssh / known_hosts ")
клиент.set_missing_host_key_policy (AutoAddPolicy ())
клиент.подключиться (hostname = "linuxhint.com ", username =" admin ", password =" AdminPassword ")
клиент.Закрыть()

Если вы столкнулись с проблемами при импорте класса Paramiko SSHClient, обратитесь к следующему вопросу о переполнении стека:

https: // stackoverflow.com / questions / 29378234 / python-import-paramiko-error-cannot-import-name-util

Подключение SSH через ключ

Как мы все знаем, подключение SSH с помощью ключа более безопасно, чем использование необработанного пароля. Paramiko знает это и позволяет передать файл ключа и подключиться к целевой системе.

Рассмотрим код ниже.

из paramiko import SSHClient
от paramiko AutoAddPolicy
клиент = SSHClient ()
клиент.load_system_host_keys ()
клиент.load_host_keys ('/ главная / linuxhint /.ssh / known_hosts ')
клиент.set_missing_host_key_policy (AutoAddPolicy ())
клиент.подключить ('linuxhint.com ', username =' admin ', key_filename =' ssh_key.pem ', пароль =' AdminPassphrase ')
клиент.Закрыть()

Запуск команд через SSH

Как только вы получите доступ к системе с помощью SSH (через Paramiko), вы можете выполнить ряд команд. Рассмотрим следующий фрагмент кода:

клиент = SSHClient ()
клиент.load_system_host_keys ()
клиент.подключить ('linuxhint.com ')
stdin, stdout, stderr = клиент.exec_command ('bash ”)
стандартный ввод.Закрыть()
стандартный вывод.Закрыть()
stderr.Закрыть()
клиент.Закрыть()

На данный момент вы знаете, как использовать библиотеку Paramiko для автоматизации SSH. Как вы понимаете, это не исчерпывающее руководство по Paramiko, и мы не будем углубляться в детали, связанные с тем, что делает инструмент. Цель заключалась в том, чтобы показать вам его реализацию.

Для получения дополнительной информации, пожалуйста, обратитесь к более полным материалам, таким как:

https: // документы.парамико.org / en / стабильный /
https: // github.com / paramiko / paramiko

Что такое Нетмико?

Нетмико очень популярна и похожа на Парамико с некоторыми существенными отличиями:

При работе в реальных сетях вы столкнетесь с различными моделями устройств. Таким образом, вам нужен надежный инструмент, который поможет автоматизировать процесс. В некоторых случаях вы не можете использовать Paramiko из-за ограничений поддержки устройств, что приводит к задержкам и сбоям - вы можете проверить поддерживаемые устройства в официальной документации. Он также значительно медленнее, чем Netmiko.

Paramiko - это скорее универсальный модуль SSH, который можно использовать для автоматизации определенных задач SSH. Напротив, Netmiko шире и хорошо оптимизирован для управления сетевыми устройствами, такими как коммутаторы и маршрутизаторы.

Абстракция - еще одно преимущество использования Netmiko. Netmiko предоставляет простую функцию, которую вы можете использовать для отключения пейджинга. Например, вывод из сеанса SSH может занимать более одной страницы. Используя обычные сеансы SSH, вам нужно будет добавить пространство, подобное вводимому, для отображения следующей страницы. Netmiko предоставляет вам способ переопределить это.

Преимущества Нетмико перед Парамико:

Как установить Netmiko

Установить Netmiko также относительно просто:

Все, что вам нужно сделать, это убедиться, что в вашей системе установлены Python и pip, и выполнить команду:

пип установить netmiko
python -m pip установить netmiko

Подключение к SSH с помощью Netmiko

Подключиться к SSH-сессиям устройства с помощью Netmiko очень просто. Помните, что Netmiko больше оптимизирован для таких устройств, как маршрутизаторы, а не для общего SSH.

Рассмотрим фрагмент кода ниже.

#import modules
из netmiko import ConnectHandler
# информация об устройстве в формате словаря.
device_config =
«Тип_устройства»: «cisco_ios»,
«Ip»: «192.168.0.1 ”,
«Имя пользователя»: «админ»,
«Пароль»: «пароль»,
«Секрет»: «пароль»

соединение = ConnectHandler (** device_config)

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

После того, как у вас есть сеанс SSH, вы можете выполнять команды с помощью функции send_command (). Netmiko поддерживает следующие функции:

Часто используемые методы Netmiko:

Как упоминалось ранее, это не руководство по использованию Netmiko, а простое руководство о том, что такое Netmiko и Paramiko. Проверьте официальную документацию для получения дополнительной информации.

https: // github.com / ktbyers / netmiko

Заключение

В этом кратком руководстве мы обсудили, как использовать paramiko для общих SSH-подключений и управления сетевыми устройствами Netmiko, продемонстрировав различия между ними.

Заключить:

Парамико Нетмико
Полезно для общего использования ssh Наиболее полезно для настройки сетевых устройств.
Ограниченная поддержка широкого спектра сетевых устройств. Поддерживает широкий спектр сетевых устройств.
Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...