Võrgustiku loomisel on palju erinevaid vaatenurki ja ei saa aru, kuidas suhelda kõigi seadmetega reaalses maailmas. Kuid kõigil võrguseadmetel on sarnane funktsionaalsus, mis valdamisel on automatiseeritud.
Nagu mu teistes õpetustes mainitud, on programmeerijad laisad ja soovivad alati tõhusust parandada - tehes seeläbi kõige vähem tööd 🙂 - ja võrguga seotud probleemide automatiseerimisel on paljudel võimalus.
Tänases kiires juhendis tutvustan teile SSH-i automatiseerimist kahe populaarse Pythoni teegi abil: Paramiko ja Netmiko. SSH automatiseerimiseks ja võrguseadmetega suhtlemiseks loome kahe teegi abil lihtsad pythoni skriptid.
Valin selle lähenemise, kuna eeskätt Paramiko ja Netmiko erinevustele keskendunud juhend oleks liiga lühike - piisaks lihtsast tabelist ja konkreetsest. Selle lähenemisviisi abil saate paremini nendega katsetada ja näha, mis mida ja kuidas teeb.
Alustame:
Mis on Paramiko?
Ametlikul veebisaidil määratletakse Paramiko järgmiselt:
"Paramiko on Python (2.7, 3.4+) SSHv2 protokolli juurutamine, mis pakub nii kliendi kui ka serveri funktsionaalsust.”
Loodan, et see oli selge. Aluselt tähendab see Paramiko on Pythoni teek SSH-ga suhtlemiseks.
Nüüd:
Kui tahame serverisse sisse logida, teame, et läheme terminali cmd, xterm, MobaXterm või lihtsalt Gnome Terminal-login'i, seejärel täidame käsud.
Vaatame, kuidas Paramiko saab selles aidata.
Paramiko installimine
Paramiko kasutamiseks peame selle installima. Teie arvutisse peaks olema installitud Python - eelistatavalt python 2. Paramiko installimiseks sisestage pipi abil käsk allpool.
sudo pip installib ParamikoPython -m pip install paramiko
Kui soovite ehitada allikast, vaadake antud ressurssi kasutades ametlikku Paramiko GitHubi hoidlat:
https: // github.com / paramiko / paramiko
SSH-ga ühenduse loomine Paramiko abil
Paramiko abil SSH-ga ühenduse loomiseks kasutame meetodit connect (), mis nõuab parameetrit hostname - see toetab ka teisi parameetreid, kuid kuna me neid ei vaja, võime neid praegu eirata.
connect (hostinimi, port = 22, kasutajanimi = puudub, parool = pole, pkey = pole, võtmefailinimi = pole, ajalõpp = puudub, allow_agent = True, look_for_keys = True, compress = False, sock = Puudub, gss_auth = False, gss_kex = Vale, gss_deleg_creds = Tõsi, gss_host = Puudub, banner_timeout = Puudub, auth_timeout = Puudub, gss_trust_dns = Tõsi, parool = puudub, Puudutatud_algoritmid = Puudub)Selle funktsiooni abil, mis on saadaval paramikos. Klient.SSHClient.connect (), ühendub määratud hostinimega ja autentib selle. Sihtsüsteemi kontrollitakse olemasolevate kohalike süsteemivõtmetega (usaldusväärsed).
Kui teil on kindel hostifail, saate kasutada meetodit load_host_keys () ja määrata Paramiko SSH-i kliendi lisama tundmatu hosti paramikole.AutoAddPolicy (). Kui kasutate klienti ebausaldusväärsetes süsteemides, vältige paramiko kasutamist.AutoAddPolicy.
SSH-i ühendamine parooliga
Ühendusmeetodist näeme, et meil on kasutajanime ja parooli parameetrid, mida saame kasutada süsteemiga ühenduse loomiseks. Kasutage SSH-i kasutajanime ja parooli kaudu ühendamiseks allpool toodud koodi.
alates paramiko import util, SSHClient, AutoAddPolicyklient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ("/ home / linuxhint /.ssh / teadaolevad hostid ")
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.connect (hostinimi = "linuxhint.com ", kasutajanimi =" admin ", parool =" AdminPassword ")
klient.Sulge()
Kui teil tekib Paramiko SSHClient klassi importimisel probleeme, vaadake järgmist virnastamisvoo küsimust:
https: // stackoverflow.com / questions / 29378234 / python-import-paramiko-error-can't-import-name-util
SSH ühendamine võtme kaudu
Nagu me kõik teame, on SSH-i võtme kaudu ühendamine turvalisem kui toore parooli kasutamine. Paramiko teab seda ja võimaldab teil võtmefaili edastada ja ühenduda sihtsüsteemiga.
Mõelge allolevale koodile.
alates paramiko import SSHClientalates paramiko AutoAddPolicy
klient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ('/ home / linuxhint /.ssh / tuntud_hostid ')
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.connect ('linuxhint.com ', kasutajanimi =' admin ', key_filename =' ssh_key.pem ', paroolifraas =' AdminPassphrase ')
klient.Sulge()
Käskude käitamine SSH kaudu
Kui olete SSH-ga (üle Paramiko) süsteemile juurde pääsenud, saate käivitada rea käske. Mõelge järgmisele koodilõigule:
klient = SSHClient ()klient.load_system_host_keys ()
klient.connect ('linuxhint.com ')
stdin, stdout, stderr = klient.exec_command ('bash')
stdin.Sulge()
stdout.Sulge()
stderr.Sulge()
klient.Sulge()
Siinkohal teate, kuidas Paramiko teeki kasutada SSH automatiseerimiseks. Nagu võite ette kujutada, pole see põhjalik Paramiko juhend ja me ei süvene tööriista tegevusega seotud üksikasjadesse. Eesmärk oli näidata teile selle rakendamist.
Lisateavet leiate palun põhjalikumatest materjalidest, näiteks:
https: // docs.paramiko.org / et / stabiilne /
https: // github.com / paramiko / paramiko
Mis on Netmiko?
Netmiko on Paramikoga väga populaarne ja sarnane mõne olulise erinevusega:
- Seadme tugi
- Performance
Reaalsetes võrkudes töötades puutute kokku erinevate seadmemudelitega. Seega vajate usaldusväärset tööriista, mis aitab teil protsessi automatiseerida. Mõnel juhul ei saa Paramikot kasutada seadmete toe piirangute tõttu, mis viib viivituste ja krahhideni - saate toetatud seadmeid vaadata ametlikust dokumentatsioonist. See on ka tunduvalt aeglasem kui Netmiko.
Paramiko on pigem üldine SSH-moodul, mida saate kasutada konkreetsete SSH-ülesannete automatiseerimiseks. Seevastu Netmiko on laiem ja hästi optimeeritud võrguseadmete nagu lülitite ja ruuterite haldamiseks.
Abstraktsioon on Netmiko kasutamise teine eelis. Netmiko pakub lihtsat funktsiooni, mille abil saate lehitsemise keelata. Näiteks võib SSH-seansi väljund olla rohkem kui üks leht. Tavaliste SSH-seansside abil peate järgmise lehe kuvamiseks lisama sisenditaolise ruumi. Netmiko pakub teile võimalust sellest alistada.
Netmiko eelised Paramiko ees on järgmised:
- Ühendage SSH kaudu automaatselt võrguseadmetega.
- See tagab näitamiskäskude ja andmete väljundi lihtsama täitmise.
- Pakub lihtsamat funktsionaalsust seadistuskäskude jaoks, kaasa arvatud toimingud.
- Mitme seadme tugi võrguseadmete müüjatele ja platvormidele.
Kuidas installida Netmiko
Netmiko installimine on samuti suhteliselt lihtne:
Kõik, mida peate tegema, on veenduda, et teie süsteemi on installitud Python ja pip, ning käivitada käsk:
pip installige netmikopython -m pip installib netmiko
SSH-ga ühenduse loomine Netmiko abil
Netmiko abil on seadme SSH-seanssidega ühenduse loomine väga lihtne. Pidage meeles, et Netmiko on rohkem optimeeritud selliste seadmete jaoks nagu ruuterid ja mitte üldine SSH.
Mõelge allolevale koodilõigule.
#import moodulidnetmiko import ConnectHandlerilt
# seadme teave sõnastiku vormingus.
device_config =
„Device_type”: „cisco_ios”,
„Ip”: „192.168.0.1 ”,
„Kasutajanimi”: „admin”,
“Parool”: “parool”,
“Saladus”: “parool”
ühendus = ConnectHandler (** device_config)
Kasutades ülaltoodud lihtsat koodi, on teil seadmega SSH-ühendus. Samuti saate seadme teavet sõnastikku edastamise asemel otse edastada.
Kui teil on SSH-seanss, saate käske täita funktsiooni send_command () abil. Netmiko toetatavad funktsioonid on järgmised:
Netmiko tavaliselt kasutatavad meetodid:
- net_connect.send_command () - see funktsioon saadab käsklused võrgukanalil alla ja tagastab väljundi mustri põhjal.
- net_connect.send_command_timing () - tagastab võrgukanalil saadetud käsu ajastuse põhjal väljundi.
- net_connect.send_config_set () - rakendab kaugseadmetele konfiguratsiooniseadeid.
- net_connect.send_config_from_file () - Rakendab konfiguratsiooniseaded välisest failist
- net_connect.save_config () - ekspordib ja salvestab jooksva konfiguratsiooni käivituskonfiguratsioonina.
- net_connect.enable () - esitab seadmele päringu aktiveerimiseks lubamisrežiim.
- net_connect.find_prompt () - tagastab praeguse ruuteri viiba
- net_connect.toime () - käivitab käsud seadmetes nagu Juniper ja IOS-XR
- net_connect.disconnect () - katkestab seansid
- net_connect.write_channel () - lubab madala kirjutamise
- net_connect.read_channel () - lubab madala lugemise.
Nagu varem mainitud, pole see juhend Netmiko kasutamiseks, vaid lihtne juhend Netmiko ja Paramiko kohta. Lisateavet leiate ametlikust dokumentatsioonist.
https: // github.com / ktbyers / netmiko
Järeldus
Selles kiirjuhendis käsitlesime, kuidas kasutada paramikot üldiste SSH-ühenduste ja Netmiko võrguseadmete haldamiseks, illustreerides nende kahe erinevust.
Kokkuvõtteks:
Paramiko | Netmiko |
Kasulik ssh üldiseks kasutamiseks | Kõige kasulikum võrguseadmete konfigureerimiseks. |
Piiratud tugi paljudele võrguseadmetele. | Toetab laias valikus võrguseadmeid. |