Verkostoitumisessa on laaja näkökulma, eikä kukaan voi hallita, miten olla vuorovaikutuksessa kaikkien laitteiden kanssa todellisessa maailmassa. Kaikilla verkkolaitteilla on kuitenkin samanlainen toiminnallisuus, joka hallitessaan on automatisoitavissa.
Kuten muissa opetusohjelmissani mainittiin, ohjelmoijat ovat laiskoja ja pyrkivät aina parantamaan tehokkuuttaan ja tekevät siten vähiten työtä 🙂 - ja kun on kyse verkkoon liittyvien ongelmien automatisoinnista, monet hyppäävät usein mahdollisuuteen.
Tämän päivän pikaoppaassa esitän sinut SSH: n automatisoimiseen kahdella suositulla Python-kirjastolla: Paramiko ja Netmiko. Luomme yksinkertaisia python-komentosarjoja käyttämällä kahta kirjastoa SSH: n automatisoimiseksi ja vuorovaikutuksessa verkkolaitteiden kanssa.
Valitsen tämän lähestymistavan, koska ensisijaisesti Paramikon ja Netmikon välisiin eroihin keskittynyt opas olisi liian lyhyt - yksinkertainen taulukko riittää - ei konkreettinen. Tämän lähestymistavan avulla voit paremmin kokeilla heitä ja nähdä, mikä tekee mitä ja miten.
Aloitetaan:
Mikä on Paramiko?
Virallisilla verkkosivuilla Paramiko määritellään seuraavasti:
"Paramiko on Python (2.7, 3.4+) SSHv2-protokollan toteutus, joka tarjoaa sekä asiakas- että palvelintoiminnot.”
Toivon, että se oli selvää. Perustana se tarkoittaa Paramiko on python-kirjasto vuorovaikutuksessa SSH: n kanssa.
Nyt:
Kun haluamme kirjautua palvelimelle, tiedämme, että siirrymme pääte-cmd, xterm, MobaXterm tai vain Gnome Terminal-login -ohjelmaan ja suoritamme sitten komennot.
Katsotaanpa, kuinka Paramiko voi auttaa siinä.
Paramikon asentaminen
Paramikon käyttämiseksi meidän on asennettava se. Sinun pitäisi olla Python - mieluiten python 2 - asennettuna koneellesi. Asenna Paramiko kirjoittamalla alla oleva komento pipillä.
sudo pip asenna ParamikoPython -m pip asenna paramiko
Jos haluat rakentaa lähteestä, tutustu viralliseen Paramiko GitHub -tietovarastoon käyttämällä toimitettua resurssia:
https: // github.com / paramiko / paramiko
Yhdistäminen SSH: hen Paramikolla
Yhteyden muodostamiseksi SSH: hen Paramikolla käytämme connect () -menetelmää, joka vaatii isäntänimen parametrin - se tukee myös muita parametreja, mutta koska emme vaadi niitä, voimme jättää ne toistaiseksi huomiotta.
muodosta yhteys (isäntänimi, portti = 22, käyttäjänimi = ei mitään, salasana = ei mitään, avain = ei mitään, avain_tiedostonimi = ei mitään, aikakatkaisu = ei mitään, allow_agent = tosi, look_for_keys = tosi, pakkaa = väärä, sukka = ei mitään, gss_auth = väärä, gss_kex = False, gss_deleg_creds = True, gss_host = Ei mitään, banner_timeout = Ei mitään, auth_timeout = Ei mitään, gss_trust_dns = Tosi, salasana = Ei mitään, pois käytöstä_algoritmit = Ei mitään)Tämän toiminnon avulla, joka on saatavana paramikossa. Asiakas.SSHClient.connect (), muodostaa yhteyden määritettyyn isäntänimeen ja todentaa sen. Kohdejärjestelmä tarkistetaan olemassa olevien paikallisten järjestelmäavainten (luotettu) perusteella.
Jos sinulla on tietty isäntätiedosto, voit käyttää load_host_keys () -menetelmää ja asettaa Paramiko SSH -asiakas lisäämään tuntemattoman isännän paramikoon.AutoAddPolicy (). Jos käytät asiakasta epäluotettavissa järjestelmissä, vältä paramikon käyttöä.AutoAddPolicy.
SSH: n yhdistäminen salasanalla
Yhdistä-menetelmästä voimme nähdä, että meillä on käyttäjätunnus- ja salasanaparametrit, joita voimme käyttää yhteyden muodostamiseen järjestelmään. Harkitse alla olevaa koodia yhdistääksesi SSH käyttäjänimen ja salasanan avulla.
paramiko-tuonnista, SSHClient, AutoAddPolicyasiakas = SSHClient ()
asiakas.load_system_host_keys ()
asiakas.load_host_keys ("/ koti / linuxhint /.ssh / known_hosts ")
asiakas.set_missing_host_key_policy (AutoAddPolicy ())
asiakas.connect (isäntänimi = "linuxhint.fi ", username =" admin ", password =" AdminPassword ")
asiakas.kiinni()
Jos kohtaat ongelmia Paramiko SSHClient -luokan tuonnissa, katso seuraava pinonkulun kysymys:
https: // stackoverflow.fi / questions / 29378234 / python-import-paramiko-error-can't-import-name-util
Yhdistetään SSH avaimen avulla
Kuten me kaikki tiedämme, SSH: n yhdistäminen avaimen kautta on turvallisempaa kuin raakasalasanan käyttö. Paramiko tietää tämän ja antaa sinun välittää avaintiedoston ja muodostaa yhteyden kohdejärjestelmään.
Harkitse alla olevaa koodia.
paramiko-tuonnista SSHClientalkaen paramiko AutoAddPolicy
asiakas = SSHClient ()
asiakas.load_system_host_keys ()
asiakas.load_host_keys ('/ koti / linuxhint /.ssh / known_hosts ')
asiakas.set_missing_host_key_policy (AutoAddPolicy ())
asiakas.connect ('linuxhint.fi ', käyttäjänimi =' admin ', avain_tiedostonimi =' ssh_key.pem ', passphrase =' AdminPassphrase ')
asiakas.kiinni()
Komentojen suorittaminen SSH: n kautta
Kun pääset järjestelmään SSH: n avulla (Paramikon kautta), voit suorittaa sarjan komentoja. Harkitse seuraavaa koodinpätkää:
asiakas = SSHClient ()asiakas.load_system_host_keys ()
asiakas.connect ('linuxhint.com ')
stdin, stdout, stderr = asiakas.exec_command ('bash')
stdin.kiinni()
stdout.kiinni()
stderr.kiinni()
asiakas.kiinni()
Tässä vaiheessa osaat käyttää Paramiko-kirjastoa SSH: n automatisointiin. Kuten voitte kuvitella, tämä ei ole kattava Paramiko-opas, emmekä sukella yksityiskohtiin, jotka liittyvät työkalun toimintaan. Tavoitteena oli näyttää sen toteutus.
Lisätietoja on kattavammissa materiaaleissa, kuten:
https: // docs.paramiko.org / fi / vakaa /
https: // github.com / paramiko / paramiko
Mikä on Netmiko?
Netmiko on erittäin suosittu ja samanlainen kuin Paramiko muutamalla merkittävällä erolla:
- Laitetuki
- Esitys
Kun työskentelet tosielämän verkoissa, törmäät erilaisiin laitemalleihin. Tarvitset siis luotettavan työkalun, joka voi auttaa sinua automatisoimaan prosessin. Joissakin tapauksissa et voi käyttää Paramikoa laitetukirajoitusten takia, mikä johtaa viiveisiin ja kaatumisiin - voit tarkistaa tuetut laitteet virallisesta dokumentaatiosta. Se on myös huomattavasti hitaampi kuin Netmiko.
Paramiko on enemmän yleinen SSH-moduuli, jota voit käyttää tiettyjen SSH-tehtävien automatisointiin. Sen sijaan Netmiko on laajempi ja hyvin optimoitu verkkolaitteiden, kuten kytkimien ja reitittimien, hallintaan.
Abstraktio on toinen Netmikon käytön etu. Netmiko tarjoaa yksinkertaisen toiminnon, jonka avulla voit poistaa sivun käytöstä. Esimerkiksi SSH-istunnon lähtö voi olla useampi kuin yksi sivu. Käyttämällä tavallisia SSH-istuntoja sinun on lisättävä syötemäinen tila seuraavan sivun näyttämiseksi. Netmiko tarjoaa sinulle mahdollisuuden ohittaa tämän.
Netmikon edut Paramikoon nähden ovat:
- Yhdistä automaattisesti SSH: n kautta verkkolaitteisiin.
- Se tarjoaa yksinkertaisemman esityskomentojen ja tietojen tulostuksen.
- Tarjoaa yksinkertaisemman toiminnon määrityskomennoille, mukaan lukien sitoutumistoiminnot.
- Usean laitteen tuki verkon laitteiden toimittajilla ja alustoilla.
Kuinka asentaa Netmiko
Netmikon asentaminen on myös suhteellisen helppoa:
Sinun tarvitsee vain varmistaa, että järjestelmään on asennettu Python ja pip, ja suorittaa komento:
pip asenna netmikopython -m pip asenna netmiko
Yhdistäminen SSH: hen Netmikolla
Yhdistäminen laitteen SSH-istuntoihin Netmikolla on hyvin helppoa. Muista, että Netmiko on optimoitu enemmän laitteille kuten reitittimille eikä yleiselle SSH: lle.
Harkitse alla olevaa koodinpätkää.
#import moduulitnetmikon tuonnista ConnectHandler
# laitetietoa sanakirjamuodossa.
device_config =
“Device_type”: “cisco_ios”,
“Ip”: “192.168.0.1 ”,
"Käyttäjänimi": "admin",
“Salasana”: “salasana”,
"Salainen": "salasana"
yhteys = ConnectHandler (** device_config)
Yllä olevan yksinkertaisen koodin avulla sinulla on SSH-yhteys laitteeseen. Voit välittää laitetiedot myös suoraan sanakirjan sijaan.
Kun sinulla on SSH-istunto, voit suorittaa komennot send_command () -toiminnon avulla. Netmikon tukemia toimintoja ovat:
Netmikon yleisesti käytetyt menetelmät:
- net_connect.send_command () - Tämä toiminto lähettää komennot verkkokanavalle ja palauttaa lähdön kuvion perusteella.
- net_connect.send_command_timing () - Palauttaa lähdön verkkokanavalla lähetetyn komennon ajoituksen perusteella.
- net_connect.send_config_set () - Asettaa määritysasetukset etälaitteille.
- net_connect.send_config_from_file () - Asettaa kokoonpanoasetukset ulkoisesta tiedostosta
- net_connect.save_config () - Vie ja tallentaa käynnissä olevan kokoonpanon käynnistyskokoonpanona.
- net_connect.enable () - pyytää laitetta aktivoimaan aktivointitilan.
- net_connect.find_prompt () - Palauta nykyinen reitittimen kehote
- net_connect.toimeenpano () - Suorittaa komentoja laitteille, kuten Juniper ja IOS-XR
- net_connect.disconnect () - Lopettaa istunnot
- net_connect.write_channel () - Mahdollistaa matalan tason kirjoittamisen
- net_connect.read_channel () - Mahdollistaa matalan tason lukemisen.
Kuten aiemmin mainittiin, tämä ei ole opas Netmikon käytöstä, vaan yksinkertainen ohje siitä, mitä Netmiko ja Paramiko ovat. Tarkista virallisista asiakirjoista lisätietoja.
https: // github.fi / ktbyers / netmiko
Johtopäätös
Tässä pikaoppaassa keskusteltiin siitä, miten paramikoa voidaan käyttää yleisiin SSH-yhteyksiin ja Netmiko-verkkolaitteiden hallintaan, havainnollistaen näiden kahden välisiä eroja.
Lopuksi:
Paramiko | Netmiko |
Hyödyllinen yleiseen ssh-käyttöön | Hyödyllisin verkkolaitteen kokoonpanossa. |
Rajoitettu tuki monille verkkolaitteille. | Tukee laajaa valikoimaa verkkolaitteita. |