Pokiaľ ide o vytváranie sietí, existuje široká škála perspektív a človek nedokáže zvládnuť interakciu so všetkými zariadeniami v reálnom svete. Všetky sieťové zariadenia však zdieľajú podobné funkcie, ktoré keď sa osvoja, sú automatizovateľné.
Ako už bolo spomenuté v mojich ďalších tutoriáloch, programátori sú leniví a neustále sa snažia zlepšovať efektívnosť, a teda odvádzať čo najmenej práce 🙂 -, a pokiaľ ide o automatizáciu problémov súvisiacich so sieťou, mnohí často dostanú šancu.
V dnešnom rýchlom sprievodcovi vám predstavím automatizáciu SSH pomocou dvoch populárnych knižníc Pythonu: Paramiko a Netmiko. Pomocou dvoch knižníc vytvoríme jednoduché pythonovské skripty na automatizáciu SSH a interakciu so sieťovými zariadeniami.
Zvolil som tento prístup, pretože sprievodca primárne zameraný na rozdiely medzi Paramikom a Netmikom by bol príliš krátky - stačila by jednoduchá tabuľka - a konkrétna. Použitím tohto prístupu budete s nimi lepšie experimentovať a uvidíte, čo a čo robí.
Začnime:
Čo je Paramiko?
Oficiálna webová stránka definuje Paramiko takto:
„Paramiko je Python (2.7, 3.4+) implementácia protokolu SSHv2, ktorá poskytuje funkcie klienta aj servera.“
Dúfam, že to bolo jasné. Z hľadiska princípu to znamená Paramiko je knižnica pythonu na interakciu s SSH.
Teraz:
Keď sa chceme prihlásiť na server, vieme, že ideme na terminál-cmd, xterm, MobaXterm alebo iba na prihlásenie do terminálu Gnome a potom vykonáme príkazy.
Pozrime sa, ako s tým môže Paramiko pomôcť.
Ako nainštalovať Paramiko
Ak chcete používať Paramiko, musíte si ho nainštalovať. Na vašom počítači by ste mali mať nainštalovaný Python - najlepšie python 2. Pomocou pipu zadajte nasledujúci príkaz a nainštalujte Paramiko.
sudo pip nainštalovať ParamikoPython -m pip nainštalujte paramiko
Ak hľadáte zostavenie zo zdroja, pozrite si oficiálne úložisko Paramiko GitHub pomocou poskytnutého zdroja:
https: // github.com / paramiko / paramiko
Pripojenie k SSH pomocou Paramiko
Na pripojenie k SSH pomocou Paramiko používame metódu connect (), ktorá vyžaduje parameter hostname - podporuje tiež ďalšie parametre, ale keďže tieto nevyžadujeme, môžeme ich zatiaľ ignorovať.
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, prístupové heslo = žiadne, deaktivované_algoritmy = žiadne)Pomocou tejto funkcie, ktorá je k dispozícii v paramiko. Zákazník.SSHClient.connect (), pripojí sa k zadanému názvu hostiteľa a autentifikuje ho. Cieľový systém sa skontroluje oproti existujúcim miestnym kľúčom systému (dôveryhodné).
Ak máte konkrétny súbor hostiteľa, môžete použiť metódu load_host_keys () a nastaviť klienta Paramiko SSH tak, aby do paramika pridal ľubovoľného neznámeho hostiteľa.AutoAddPolicy (). Ak používate klienta v nedôveryhodných systémoch, nepoužívajte paramiko.AutoAddPolicy.
Pripojenie SSH pomocou hesla
Z metódy pripojenia vidíme, že máme parametre používateľského mena a hesla, ktoré môžeme použiť na pripojenie k systému. Zvážte nasledujúci kód na pripojenie SSH pomocou používateľského mena a hesla.
z paramiko import util, SSHClient, AutoAddPolicyklient = SSHClient ()
zákazník.load_system_host_keys ()
zákazník.load_host_keys ("/ home / linuxhint /".ssh / known_hosts ")
zákazník.set_missing_host_key_policy (AutoAddPolicy ())
zákazník.pripojiť (názov hostiteľa = "linuxhint.com ", username =" admin ", heslo =" AdminPassword ")
zákazník.Zavrieť()
Ak narazíte na problémy pri importovaní triedy Paramiko SSHClient, pozrite si nasledujúcu otázku stackoverflow:
https: // stackoverflow.com / questions / 29378234 / python-import-paramiko-error-cannot-import-name-util
Pripojenie SSH pomocou kľúča
Ako všetci vieme, pripojenie SSH pomocou kľúča je bezpečnejšie ako použitie surového hesla. Paramiko to vie a umožňuje vám odovzdať súbor s kľúčmi a pripojiť sa k cieľovému systému.
Zvážte kód uvedený nižšie.
z paramiko import SSHClientod paramiko AutoAddPolicy
klient = SSHClient ()
zákazník.load_system_host_keys ()
zákazník.load_host_keys ('/ home / linuxhint /.ssh / known_hosts ')
zákazník.set_missing_host_key_policy (AutoAddPolicy ())
zákazník.pripojiť ('linuxhint.com ', username =' admin ', key_filename =' ssh_key.pem ', passphrase =' AdminPassphrase ')
zákazník.Zavrieť()
Spúšťanie príkazov nad SSH
Akonáhle získate prístup do systému pomocou SSH (cez Paramiko), môžete vykonať sériu príkazov. Zvážte nasledujúci útržok kódu:
klient = SSHClient ()zákazník.load_system_host_keys ()
zákazník.pripojiť ('linuxhint.com ')
stdin, stdout, stderr = klient.exec_command ('bash ")
stdin.Zavrieť()
stdout.Zavrieť()
stderr.Zavrieť()
zákazník.Zavrieť()
V tomto okamihu viete, ako používať knižnicu Paramiko na automatizáciu SSH. Ako si viete predstaviť, nejde o komplexného sprievodcu Paramikom a neponárame sa do podrobností týkajúcich sa toho, čo tento nástroj robí. Cieľom bolo ukázať vám jeho implementáciu.
Ďalšie informácie nájdete v komplexnejších materiáloch, ako napríklad:
https: // dokumenty.paramiko.org / en / stable /
https: // github.com / paramiko / paramiko
Čo je Netmiko?
Netmiko je veľmi populárny a podobný Paramiku s niekoľkými významnými rozdielmi:
- Podpora zariadenia
- Výkon
Pri práci na sieťach z reálneho sveta narazíte na rôzne modely zariadení. Preto potrebujete spoľahlivý nástroj, ktorý vám pomôže automatizovať proces. V niektorých prípadoch nemôžete Paramiko používať z dôvodu obmedzení podpory zariadení, ktoré vedú k oneskoreniam a zlyhaniam - podporované zariadenia môžete skontrolovať v oficiálnej dokumentácii. Je tiež podstatne pomalší ako Netmiko.
Paramiko je skôr generický modul SSH, ktorý môžete použiť na automatizáciu konkrétnych úloh SSH. Naproti tomu Netmiko je širší a dobre optimalizovaný na správu sieťových zariadení, ako sú prepínače a smerovače.
Abstrakcia je ďalšou výhodou používania Netmiko. Netmiko poskytuje jednoduchú funkciu, pomocou ktorej môžete vypnúť stránkovanie. Napríklad výstupom z relácie SSH môže byť viac ako jedna stránka. Pri použití pravidelných relácií SSH budete musieť pridať priestor podobný vstupu, aby sa zobrazila ďalšia stránka. Netmiko vám poskytuje spôsob, ako to prekonať.
Výhody Netmiko oproti Paramiko sú:
- Automatické pripojenie cez SSH k sieťovým zariadeniam.
- Poskytuje jednoduchšie vykonávanie príkazov na prehliadku a výstup dát.
- Poskytuje jednoduchšie funkcie pre konfiguračné príkazy vrátane akcií potvrdenia.
- Podpora viacerých zariadení medzi dodávateľmi a platformami sieťových zariadení.
Ako nainštalovať Netmiko
Inštalácia Netmiko je tiež pomerne jednoduchá:
Musíte sa len ubezpečiť, že máte vo svojom systéme nainštalovaný Python a pip a spustiť príkaz:
pip nainštaluj netmikopython -m pip nainštalovať netmiko
Pripojenie k SSH pomocou Netmiko
Pripojenie k reláciám SSH pomocou Netmiko je veľmi jednoduché. Pamätajte, že Netmiko je optimalizovanejšie pre zariadenia, ako sú smerovače, a nie pre generické SSH.
Zvážte fragment kódu uvedený nižšie.
#import modulyz netmiko importu ConnectHandler
# informácie o zariadení vo formáte slovníka.
device_config =
„Device_type“: „cisco_ios“,
„Ip“: „192.168.0.1 ”,
„Username“: „admin“,
„Password“: „heslo“,
“Secret”: “heslo”
connection = ConnectHandler (** device_config)
Pomocou jednoduchého kódu vyššie budete mať k zariadeniu pripojenie SSH. Môžete tiež priamo preniesť informácie o zariadení namiesto ich prenosu do slovníka.
Keď už máte reláciu SSH, môžete vykonávať príkazy pomocou funkcie send_command (). Medzi funkcie podporované programom netmiko patria:
Bežne používané metódy Netmiko:
- net_connect.send_command () - Táto funkcia odosiela príkazy po sieťovom kanáli a vracia výstup na základe vzoru.
- net_connect.send_command_timing () - Vráti výstup na základe načasovania z príkazu odoslaného po sieťovom kanáli.
- net_connect.send_config_set () - Aplikuje konfiguračné nastavenia na vzdialené zariadenia.
- net_connect.send_config_from_file () - Použije konfiguračné nastavenia z externého súboru
- net_connect.save_config () - Exportuje a uloží spustenú konfiguráciu ako konfiguráciu pri spustení.
- net_connect.enable () - Dotáže zariadenie, aby aktivovalo režim povolení.
- net_connect.find_prompt () - Vráti aktuálnu výzvu smerovača
- net_connect.commit () - Spustí príkazy na potvrdenie na zariadeniach, ako sú Juniper a IOS-XR
- net_connect.odpojiť () - ukončí relácie
- net_connect.write_channel () - Povolí zápis na nízkej úrovni
- net_connect.read_channel () - Povolí čítanie na nízkej úrovni.
Ako už bolo spomenuté, nejde o návod, ako používať Netmiko, ale o jednoduchý smer toho, čo Netmiko a Paramiko sú. Ďalšie informácie nájdete v oficiálnej dokumentácii.
https: // github.com / ktbyers / netmiko
Záver
V tejto rýchlej príručke sme diskutovali o tom, ako používať paramiko na všeobecné pripojenia SSH a správu sieťových zariadení Netmiko, čo ilustruje rozdiely medzi týmito dvoma.
Uzavrieť:
Paramiko | Netmiko |
Užitočné pre všeobecné použitie ssh | Najužitočnejšie pre konfiguráciu sieťových zariadení. |
Obmedzená podpora pre širokú škálu sieťových zariadení. | Podporuje širokú škálu sieťových zariadení. |