Runājot par tīklu veidošanu, ir plašs perspektīvu spektrs, un nevar apgūt, kā mijiedarboties ar visām ierīcēm reālajā pasaulē. Tomēr visām tīkla ierīcēm ir līdzīga funkcionalitāte, kas, apgūstot, ir automātiska.
Kā minēts manās citās apmācībās, programmētāji ir slinki un vienmēr vēlas uzlabot efektivitāti, tādējādi darot vismazāk darba 🙂 - un, kad runa ir par ar tīklu saistītu problēmu automatizēšanu, daudzi bieži izvēlas iespēju.
Šodienas ātrajā ceļvedī es jūs iepazīstināšu ar SSH automatizēšanu, izmantojot divas populāras Python bibliotēkas: Paramiko un Netmiko. Mēs izveidosim vienkāršus pitona skriptus, izmantojot abas bibliotēkas, lai automatizētu SSH un mijiedarbotos ar tīkla ierīcēm.
Es izvēlos šo pieeju, jo ceļvedis, kas galvenokārt koncentrēts uz atšķirībām starp Paramiko un Netmiko, būtu pārāk īss - pietiktu ar vienkāršu tabulu un nekonkrētu. Izmantojot šo pieeju, jūs varēsiet labāk eksperimentēt ar viņiem un redzēt, kurš un ko dara.
Sāksim:
Kas ir Paramiko?
Oficiālajā vietnē Paramiko ir definēts šādi:
“Paramiko ir pitons (2.7, 3.4+) SSHv2 protokola ieviešana, kas nodrošina gan klienta, gan servera funkcionalitāti.”
Es ceru, ka tas bija skaidrs. Pamatā tas nozīmē Paramiko ir pitona bibliotēka mijiedarbībai ar SSH.
Tagad:
Kad mēs vēlamies pieteikties serverī, mēs zinām, ka mēs ejam uz terminal-cmd, xterm, MobaXterm vai vienkārši Gnome Terminal-login, pēc tam izpildām komandas.
Apskatīsim, kā Paramiko var palīdzēt šajā jautājumā.
Kā instalēt Paramiko
Lai izmantotu Paramiko, mums tas ir jāinstalē. Jūsu datorā jābūt instalētam Python - vēlams, python 2. Izmantojot pip, ievadiet komandu zemāk, lai instalētu Paramiko.
sudo pip instalējiet ParamikoPython -m pip instalē paramiko
Ja vēlaties veidot no avota, skatiet oficiālo Paramiko GitHub repozitoriju, izmantojot norādīto resursu:
https: // github.com / paramiko / paramiko
Savienojums ar SSH, izmantojot Paramiko
Lai izveidotu savienojumu ar SSH, izmantojot Paramiko, mēs izmantojam metodi connect (), kurai nepieciešams parametrs resursdatora nosaukums - tas atbalsta arī citus parametrus, taču, tā kā tie nav nepieciešami, mēs tos tagad varam ignorēt.
savienot (resursdatora nosaukums, ports = 22, lietotājvārds = nav, parole = nav, pkey = nav, key_filename = nav, taimauts = nav, allow_agent = True, look_for_keys = True, compress = False, zeķe = None, gss_auth = False, gss_kex = Nepatiesa, gss_deleg_creds = True, gss_host = Nav, banner_timeout = Nav, auth_timeout = Nav, gss_trust_dns = True, parole = None, disabled_algorithms = Nav)Izmantojot šo funkciju, kas ir pieejama paramiko. Klients.SSHClient.connect (), izveido savienojumu ar norādīto resursdatora nosaukumu un to autentificē. Mērķa sistēma tiek pārbaudīta, ņemot vērā esošās vietējās sistēmas atslēgas (uzticamas).
Ja jums ir noteikts resursdatora fails, varat izmantot metodi load_host_keys () un iestatīt Paramiko SSH klientu, lai paramiko pievienotu nezināmu resursdatoru.AutoAddPolicy (). Ja izmantojat klientu neuzticamās sistēmās, izvairieties no paramiko lietošanas.AutoAddPolicy.
SSH savienošana ar paroli
No savienojuma metodes mēs varam redzēt, ka mums ir lietotājvārda un paroles parametri, kurus mēs varam izmantot, lai izveidotu savienojumu ar sistēmu. Apsveriet zemāk esošo kodu, lai savienotu SSH, izmantojot lietotājvārdu un paroli.
no paramiko import util, SSHClient, AutoAddPolicyklients = SSHClient ()
klients.load_system_host_keys ()
klients.load_host_keys ("/ home / linuxhint /.ssh / zināmi_zimnieki ")
klients.set_missing_host_key_policy (AutoAddPolicy ())
klients.savienot (resursdatora nosaukums = "linuxhint.com ", username =" admin ", password =" AdminPassword ")
klients.aizvērt ()
Ja rodas problēmas, importējot Paramiko SSHClient klasi, skatiet šo jautājumu:
https: // stackoverflow.com / questions / 29378234 / python-import-paramiko-error-can't-import-name-util
SSH savienošana, izmantojot atslēgu
Kā mēs visi zinām, SSH savienošana ar atslēgu ir drošāka nekā neapstrādātas paroles izmantošana. Paramiko to zina un ļauj jums nodot atslēgas failu un izveidot savienojumu ar mērķa sistēmu.
Apsveriet zemāk redzamo kodu.
no paramiko importa SSHClientno paramiko AutoAddPolicy
klients = SSHClient ()
klients.load_system_host_keys ()
klients.load_host_keys ('/ home / linuxhint /.ssh / zināmi_zimnieki ')
klients.set_missing_host_key_policy (AutoAddPolicy ())
klients.savienot ('linuxhint.com ', lietotājvārds =' admin ', key_filename =' ssh_key.pem ', passphrase =' AdminPassphrase ')
klients.aizvērt ()
Komandu vadīšana, izmantojot SSH
Kad esat ieguvis piekļuvi sistēmai, izmantojot SSH (izmantojot Paramiko), varat izpildīt virkni komandu. Apsveriet šo koda fragmentu:
klients = SSHClient ()klients.load_system_host_keys ()
klients.savienot ('linuxhint.com ')
stdin, stdout, stderr = klients.exec_command ('bash')
stdin.aizvērt ()
stdout.aizvērt ()
stderr.aizvērt ()
klients.aizvērt ()
Šajā brīdī jūs zināt, kā izmantot Paramiko bibliotēku, lai automatizētu SSH. Kā jūs varat iedomāties, tas nav visaptverošs Paramiko ceļvedis, un mēs neiedziļināmies detaļās, kas saistītas ar rīka darbību. Mērķis bija parādīt tā ieviešanu.
Lai iegūtu papildinformāciju, lūdzu, skatiet plašākus materiālus, piemēram:
https: // docs.paramiko.org / lv / stabils /
https: // github.com / paramiko / paramiko
Kas ir Netmiko?
Netmiko ir ļoti populārs un līdzīgs Paramiko ar dažām būtiskām atšķirībām:
- Ierīces atbalsts
- Izrāde
Strādājot reālās pasaules tīklos, jūs sastapsieties ar dažādiem ierīču modeļiem. Tādējādi jums ir nepieciešams uzticams rīks, kas var palīdzēt jums procesu automatizēt. Dažos gadījumos jūs nevarat izmantot Paramiko ierīču atbalsta ierobežojumu dēļ, kas noved pie atpalicības un avārijām - atbalstītās ierīces varat pārbaudīt oficiālajā dokumentācijā. Tas ir arī ievērojami lēnāks nekā Netmiko.
Paramiko drīzāk ir vispārējs SSH modulis, kuru varat izmantot, lai automatizētu noteiktus SSH uzdevumus. Turpretī Netmiko ir plašāks un labi optimizēts, lai pārvaldītu tīkla ierīces, piemēram, slēdžus un maršrutētājus.
Abstrakcija ir vēl viena Netmiko izmantošanas priekšrocība. Netmiko nodrošina vienkāršu funkciju, kuru varat izmantot, lai atspējotu lapošanu. Piemēram, SSH sesijas izvade var būt vairāk nekā viena lapa. Izmantojot regulāras SSH sesijas, jums būs jāpievieno ievadei līdzīga vieta, lai parādītu nākamo lapu. Netmiko sniedz jums iespēju to ignorēt.
Netmiko priekšrocības salīdzinājumā ar Paramiko ir:
- Automātiski izveidot savienojumu ar tīkla ierīcēm, izmantojot SSH.
- Tas nodrošina vienkāršāku šovu komandu un datu izvades izpildi.
- Nodrošina vienkāršāku konfigurācijas komandu funkcionalitāti, ieskaitot darbības.
- Vairāku ierīču atbalsts visiem tīkla ierīču piegādātājiem un platformām.
Kā instalēt Netmiko
Netmiko instalēšana ir arī salīdzinoši vienkārša:
Viss, kas jums jādara, ir pārliecināties, vai sistēmā ir instalēts Python un pip, un izpildiet komandu:
pip instalēt netmikopython -m pip instalēt netmiko
Savienojuma izveide ar SSH, izmantojot Netmiko
Savienošana ar ierīces SSH sesijām, izmantojot Netmiko, ir ļoti vienkārša. Atcerieties, ka Netmiko ir vairāk optimizēts tādām ierīcēm kā maršrutētāji, nevis vispārējs SSH.
Apsveriet tālāk redzamo koda fragmentu.
#import moduļino netmiko importa ConnectHandler
# ierīces informācija vārdnīcas formātā.
device_config =
“Device_type”: “cisco_ios”,
“Ip”: “192.168. lpp.0.1 ”,
“Lietotājvārds”: “administrators”,
“Parole”: “parole”,
“Noslēpums”: “parole”
savienojums = ConnectHandler (** device_config)
Izmantojot vienkāršo kodu iepriekš, jums būs SSH savienojums ar ierīci. Varat arī tieši pārsūtīt ierīces informāciju, nevis nodot to vārdnīcai.
Pēc SSH sesijas jūs varat izpildīt komandas, izmantojot funkciju send_command (). Netmiko atbalstītās funkcijas ietver:
Netmiko bieži izmantotās metodes:
- net_connect.send_command () - Šīs funkcijas nosūta komandas tīkla kanālā un atgriež izvadi, pamatojoties uz modeli.
- net_connect.send_command_timing () - atgriež izvadi, pamatojoties uz laiku no komandas, kas nosūtīta pa tīkla kanālu.
- net_connect.send_config_set () - attālajām ierīcēm piemēro konfigurācijas iestatījumus.
- net_connect.send_config_from_file () - piemēro konfigurācijas iestatījumus no ārēja faila
- net_connect.save_config () - eksportē un saglabā darbojošos konfigurāciju kā startēšanas konfigurāciju.
- net_connect.iespējot () - vaicā ierīcei, lai aktivizētu iespējošanas režīmu.
- net_connect.find_prompt () - atgriež pašreizējo maršrutētāja uzvedni
- net_connect.toime () - Izpilda komandas tādās ierīcēs kā Juniper un IOS-XR
- net_connect.atvienot () - pārtrauc sesijas
- net_connect.write_channel () - iespējo zema līmeņa rakstīšanu
- net_connect.read_channel () - iespējo lasīšanu zemā līmenī.
Kā minēts iepriekš, tas nav ceļvedis par Netmiko lietošanu, bet vienkāršs norādījums par to, kas ir Netmiko un Paramiko. Plašāku informāciju skatiet oficiālajā dokumentācijā.
https: // github.com / ktbyers / netmiko
Secinājums
Šajā ātrajā ceļvedī mēs apspriedām, kā izmantot paramiko vispārējiem SSH savienojumiem un Netmiko tīkla ierīču pārvaldībai, ilustrējot atšķirības starp abiem.
Secināt:
Paramiko | Netmiko |
Noderīga vispārīgai ssh lietošanai | Visnoderīgākais tīkla ierīces konfigurēšanai. |
Ierobežots atbalsts plaša spektra tīkla ierīcēm. | Atbalsta plašu tīkla ierīču klāstu. |