Python

Каква е разликата между Парамико и Нетмико?

Каква е разликата между Парамико и Нетмико?

Що се отнася до мрежите, има широк спектър от перспективи и човек не може да овладее как да взаимодейства с всички устройства в реалния свят. Всички мрежови устройства обаче споделят подобна функционалност, която, когато бъде усвоена, е автоматизирана.

Както бе споменато в другите ми уроци, програмистите са мързеливи и винаги се стремят да подобрят ефективността, като по този начин правят най-малко работа 🙂 - и когато става въпрос за автоматизиране на проблеми, свързани с мрежата, много от тях често се възползват.

В днешното кратко ръководство ще ви запозная с автоматизирането на SSH с помощта на две популярни библиотеки на Python: Парамико и Нетмико. Ще създадем прости python скриптове, използвайки двете библиотеки за автоматизиране на SSH и взаимодействие с мрежови устройства.

Избирам този подход, тъй като ръководство, фокусирано основно върху разликите между Парамико и Нетмико, би било твърде кратко - обикновена таблица би била достатъчна - и няма конкретна информация. Като възприемете този подход, ще можете по-добре да експериментирате с тях и да видите кой какво и как прави.

Да започваме:

Какво е Парамико?

Официалният уебсайт определя Парамико, както следва:

„Парамико е питон (2.7, 3.4+) внедряване на протокола SSHv2, който осигурява както клиентска, така и сървърна функционалност.”

Надявам се, че това беше ясно. В основата си това означава Paramiko е библиотека на python за взаимодействие със SSH.

Сега:

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

Нека да видим как Paramiko може да помогне с това.

Как да инсталирате Paramiko

За да използваме Paramiko, трябва да го инсталираме. Трябва да имате инсталиран Python - за предпочитане python 2 - на вашата машина. Използвайки pip, въведете командата по-долу, за да инсталирате Paramiko.

sudo pip инсталирайте Paramiko
Python -m pip инсталира paramiko

Ако искате да изградите от източника, обърнете се към официалното хранилище на Paramiko GitHub, като използвате предоставения ресурс:

https: // github.com / paramiko / paramiko

Свързване към SSH с помощта на Paramiko

За да се свържем със SSH с помощта на Paramiko, използваме метода connect (), който изисква параметъра на името на хоста - той поддържа и други параметри, но тъй като не се нуждаем от тях, засега можем да ги игнорираме.

свързване (име на хост, порт = 22, потребителско име = Няма, парола = Няма, pkey = Няма, име на ключ_файл = Няма, изчакване = Няма, allow_agent = Вярно, look_for_keys = Вярно, компресиране = Невярно, чорап = Няма, gss_auth = Невярно, gss_kex = Невярно, gss_deleg_creds = Вярно, gss_host = Няма, banner_timeout = Няма, auth_timeout = Няма, gss_trust_dns = Вярно, пропуск = Няма, disabled_algorithms = Няма)

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

Ако имате конкретен хостов файл, можете да използвате метода load_host_keys () и да настроите Paramiko SSH клиента да добавя неизвестен хост към paramiko.AutoAddPolicy (). Ако използвате клиента в ненадеждни системи, избягвайте да използвате paramiko.AutoAddPolicy.

Свързване на SSH с парола

От метода на свързване можем да видим, че разполагаме с параметрите за потребителско име и парола, които можем да използваме за свързване със системата. Помислете за кода по-долу, за да свържете SSH чрез потребителско име и парола.

от paramiko import util, SSHClient, AutoAddPolicy
клиент = SSHClient ()
клиент.load_system_host_keys ()
клиент.load_host_keys ("/ начало / linuxhint /.ssh / known_hosts ")
клиент.set_missing_host_key_policy (AutoAddPolicy ())
клиент.свързване (име на хост = "linuxhint.com ", потребителско име =" администратор ", парола =" AdminPassword ")
клиент.близо()

Ако срещнете проблеми при импортиране на клас Paramiko SSHClient, вижте следния въпрос за stackoverflow:

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 ())
клиент.connect ('linuxhint.com ', потребителско име =' admin ', key_filename =' ssh_key.pem ', passphrase =' AdminPassphrase ')
клиент.близо()

Изпълнение на команди над SSH

След като получите достъп до системата с помощта на SSH (през Paramiko), можете да изпълните поредица от команди. Помислете за следния кодов фрагмент:

клиент = SSHClient ()
клиент.load_system_host_keys ()
клиент.connect ('linuxhint.com ')
stdin, stdout, stderr = клиент.exec_command ('баш')
stdin.близо()
stdout.близо()
stderr.близо()
клиент.близо()

На този етап знаете как да използвате библиотеката Paramiko за автоматизиране на SSH. Както можете да си представите, това не е изчерпателно ръководство на Paramiko и ние не се впускаме в подробности, свързани с това, което инструментът прави. Целта беше да ви покажа изпълнението му.

За повече информация вижте по-изчерпателни материали като:

https: // docs.парамико.org / bg / стабилен /
https: // github.com / paramiko / paramiko

Какво е Netmiko?

Netmiko е много популярен и подобен на Paramiko с няколко съществени разлики:

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

Paramiko е по-скоро общ SSH модул, който можете да използвате за автоматизиране на конкретни SSH задачи. За разлика от това, Netmiko е по-широк и добре оптимизиран за управление на мрежови устройства като комутатори и рутери.

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

Предимствата на Netmiko пред Paramiko са:

Как да инсталирате Netmiko

Инсталирането на Netmiko също е относително лесно:

Всичко, което трябва да направите, е да се уверите, че имате инсталирани Python и pip на вашата система и да изпълните командата:

pip инсталирайте netmiko
python -m pip инсталирайте netmiko

Свързване към SSH с помощта на Netmiko

Свързването към SSH сесии на устройство с помощта на Netmiko е много просто. Не забравяйте, че Netmiko е по-оптимизиран за устройства като рутери, а не за общ SSH.

Помислете за кодовия фрагмент по-долу.

#import модули
от netmiko import ConnectHandler
# информация за устройството във формат на речника.
device_config =
“Device_type”: “cisco_ios”,
„Ip“: „192.168.0.1 ”,
„Потребителско име“: „администратор“,
“Парола”: “парола”,
“Secret”: “парола”

връзка = ConnectHandler (** device_config)

Използвайки простия код по-горе, ще имате SSH връзка с устройството. Можете също така да предавате директно информацията за устройството, вместо да я предавате в речник.

След като имате SSH сесия, можете да изпълнявате команди, като използвате функцията send_command (). Функциите, поддържани от netmiko, включват:

Често използвани методи на Netmiko:

Както споменахме по-рано, това не е ръководство за това как да използвате Netmiko, а проста насока за това какво са Netmiko и Paramiko. Проверете официалната документация за повече информация.

https: // github.com / ktbyers / netmiko

Заключение

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

В заключение:

Парамико Нетмико
Полезно за обща употреба на ssh Най-полезно за конфигуриране на мрежово устройство.
Ограничена поддръжка за широк спектър от мрежови устройства. Поддържа широка гама от мрежови устройства.
OpenTTD срещу Simutrans
Създаването на собствена транспортна симулация може да бъде забавно, релаксиращо и изключително примамливо. Ето защо трябва да сте сигурни, че изпробв...
Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...