Ami a hálózatot illeti, a nézőpontok széles skálája van, és nem lehet elsajátítani, hogyan kell a valós világ összes eszközével kapcsolatba lépni. Ugyanakkor minden hálózati eszköz hasonló funkciókkal rendelkezik, amelyek elsajátításakor automatizálhatók.
Amint azt a többi oktatóanyagomban említettem, a programozók lusták és mindig a hatékonyság javítására törekszenek - így a legkevesebb munkát végezik 🙂 - és amikor a hálózattal kapcsolatos problémák automatizálására kerül sor, sokan gyakran esélyesek.
A mai gyors útmutatóban bemutatom az SSH automatizálását két népszerű Python könyvtár segítségével: Paramiko és Netmiko. A két könyvtár segítségével egyszerű python szkripteket hozunk létre az SSH automatizálásához és a hálózati eszközökkel való interakcióhoz.
Azért választom ezt a megközelítést, mert egy útmutató, amely elsősorban a Paramiko és a Netmiko közötti különbségekre összpontosít, túl rövid lenne - elegendő lenne egy egyszerű táblázat, és nem konkrét. Ezzel a megközelítéssel jobban kísérletezhet velük, és megnézheti, hogy ki mit és hogyan csinál.
Kezdjük el:
Mi az a Paramiko?
A hivatalos weboldal a Paramikót a következőképpen határozza meg:
„A Paramiko egy Python (2.7, 3.4+) az SSHv2 protokoll megvalósítása, amely mind az ügyfél, mind a szerver funkciókat biztosítja.”
Remélem, ez egyértelmű volt. Alapvetően ez azt jelenti A Paramiko egy Python könyvtár az SSH-val való interakcióhoz.
Most:
Amikor be akarunk jelentkezni egy szerverre, tudjuk, hogy megyünk a terminál-cmd, xterm, MobaXterm vagy csak a Gnome Terminal-login oldalra, majd végrehajtjuk a parancsokat.
Lássuk, hogyan segíthet ebben a Paramiko.
A Paramiko telepítése
A Paramiko használatához telepítenünk kell. A gépre telepítenie kell a Python-ot - lehetőleg a Python 2-t. A pip használatával írja be az alábbi parancsot a Paramiko telepítéséhez.
sudo pip telepítse a ParamikótA Python -m pip telepíti a paramiko-t
Ha a forrásból kíván építkezni, tekintse meg a hivatalos Paramiko GitHub adattárat a megadott erőforrás segítségével:
https: // github.com / paramiko / paramiko
Csatlakozás az SSH-hoz a Paramiko használatával
Az SSH-hoz való csatlakozáshoz a Paramiko használatával a connect () metódust használjuk, amely megköveteli a hostname paramétert - más paramétereket is támogat, de mivel ezekre nincs szükségünk, egyelőre figyelmen kívül hagyhatjuk őket.
connect (gazdagépnév, port = 22, felhasználónév = Nincs, jelszó = Nincs, kulcs = Nincs, kulcs_neve = Nincs, időtúllépés = Nincs, allow_agent = Igaz, look_for_keys = Igaz, tömörítés = Hamis, zokni = Nincs, gss_auth = Hamis, gss_kex = Hamis, gss_deleg_creds = Igaz, gss_host = Nincs, banner_timeout = Nincs, auth_timeout = Nincs, gss_trust_dns = Igaz, jelszó = Nincs, disabled_algorithms = Nincs)Ennek a paramiko-ban elérhető funkciónak a használatával. Ügyfél.SSHClient.connect (), csatlakozik a megadott hosztnévhez és hitelesíti. A célrendszert ellenőrzik a meglévő helyi rendszerkulcsokkal (megbízható).
Ha van egy meghatározott gazdagépfájlja, használhatja a load_host_keys () metódust, és beállíthatja, hogy a Paramiko SSH kliens hozzáadjon ismeretlen gazdagépet a paramikóhoz.AutoAddPolicy (). Ha az ügyfelet nem megbízható rendszerekben használja, kerülje a paramiko használatát.AutoAddPolicy.
SSH csatlakoztatása jelszóval
A connect módszerből láthatjuk, hogy rendelkezünk a felhasználónév és jelszó paraméterekkel, amelyek segítségével csatlakozhatunk a rendszerhez. Vegye figyelembe az alábbi kódot az SSH felhasználónévvel és jelszóval történő összekapcsolásához.
a paramiko import util, az SSHClient, az AutoAddPolicy alkalmazásbólkliens = SSHClient ()
ügyfél.load_system_host_keys ()
ügyfél.load_host_keys ("/ home / linuxhint /.ssh / ismert_tulajdonosok ")
ügyfél.set_missing_host_key_policy (AutoAddPolicy ())
ügyfél.connect (hosztnév = "linuxhint.com ", felhasználónév =" admin ", password =" AdminPassword ")
ügyfél.Bezárás()
Ha problémák merülnek fel a Paramiko SSHClient osztály importálásakor, olvassa el a következő stackoverflow kérdést:
https: // stackoverflow.com / questions / 29378234 / python-import-paramiko-error-can't-import-name-util
SSH összekapcsolása kulccsal
Mint mindannyian tudjuk, az SSH kulcson keresztül történő csatlakoztatása biztonságosabb, mint egy nyers jelszó használata. A Paramiko tudja ezt, és lehetővé teszi, hogy átadja a kulcsfájlt, és csatlakozzon a célrendszerhez.
Vegye figyelembe az alábbi kódot.
a paramiko import SSHClient-tőla paramiko AutoAddPolicy oldalról
kliens = SSHClient ()
ügyfél.load_system_host_keys ()
ügyfél.load_host_keys ('/ home / linuxhint /.ssh / ismert_hosztok ')
ügyfél.set_missing_host_key_policy (AutoAddPolicy ())
ügyfél.connect ('linuxhint.com ', felhasználónév =' admin ', kulcs_neve =' ssh_key.pem ', passphrase =' AdminPassphrase ')
ügyfél.Bezárás()
Parancsok futtatása SSH-n keresztül
Miután hozzáférést kapott a rendszerhez az SSH használatával (a Paramiko felett), parancsok sorozatát hajthatja végre. Vegye figyelembe a következő kódrészletet:
kliens = SSHClient ()ügyfél.load_system_host_keys ()
ügyfél.connect ('linuxhint.com ')
stdin, stdout, stderr = kliens.exec_command ('bash')
stdin.Bezárás()
stdout.Bezárás()
stderr.Bezárás()
ügyfél.Bezárás()
Ezen a ponton tudja, hogyan kell használni a Paramiko könyvtárat az SSH automatizálásához. Ahogy el lehet képzelni, ez nem egy átfogó Paramiko útmutató, és nem merülünk bele az eszköz működésével kapcsolatos részletekbe. A cél az volt, hogy bemutassuk a megvalósítását.
További információkért kérjük, olvassa el az átfogóbb anyagokat, például:
https: // docs.paramiko.org / hu / stabil /
https: // github.com / paramiko / paramiko
Mi az a Netmiko?
A Netmiko nagyon népszerű és hasonló a Paramikóhoz, néhány jelentős különbséggel:
- Eszköz támogatás
- Teljesítmény
Amikor valós hálózatokon dolgozik, különféle eszközmodellekkel találkozhat. Szüksége van tehát egy megbízható eszközre, amely segíthet a folyamat automatizálásában. Bizonyos esetekben az eszköz támogatásának korlátai miatt nem használhatja a Paramikót, ami késésekhez és összeomlásokhoz vezet - ellenőrizheti a támogatott eszközöket a hivatalos dokumentációban. Ez is jelentősen lassabb, mint a Netmiko.
A Paramiko inkább egy általános SSH modul, amelyet felhasználhat specifikus SSH feladatok automatizálására. Ezzel szemben a Netmiko szélesebb körű és jól optimalizált hálózati eszközök, például kapcsolók és útválasztók kezelésére.
Az absztrakció a Netmiko használatának másik előnye. A Netmiko egy egyszerű funkciót biztosít, amellyel letilthatja a lapozást. Például az SSH munkamenet kimenete több oldal is lehet. A szokásos SSH munkamenetek használatával hozzá kell adnia egy bemenetszerű helyet a következő oldal megjelenítéséhez. A Netmiko lehetőséget kínál arra, hogy ezt felülbírálja.
A Netmiko előnyei a Paramikóval szemben:
- Automatikus csatlakozás SSH-n keresztül a hálózati eszközökhöz.
- A show parancsok és az adatkimenet egyszerűbb végrehajtását biztosítja.
- Egyszerűbb funkcionalitást biztosít a konfigurációs parancsok számára, beleértve a végrehajtási műveleteket is.
- Több eszköz támogatása a hálózati eszközök gyártói és platformjai között.
A Netmiko telepítése
A Netmiko telepítése szintén viszonylag egyszerű:
Csak annyit kell tennie, hogy meg kell győződnie arról, hogy a Python és a pip telepítve van a rendszerén, és hajtsa végre a parancsot:
pip telepítse a netmikótpython -m pip telepítse a netmikót
Csatlakozás SSH-hez a Netmiko segítségével
A Netmiko használatával nagyon egyszerű csatlakozni az eszköz SSH munkameneteihez. Ne feledje, hogy a Netmiko jobban optimalizált eszközökhöz, például útválasztókhoz, és nem általános SSH-hoz.
Vegye figyelembe az alábbi kódrészletet.
#import moduloka netmiko importtól a ConnectHandler
# eszközinformáció szótár formátumban.
device_config =
„Device_type”: „cisco_ios”,
„Ip”: „192.168.0.1 ”,
„Felhasználónév”: „admin”,
„Jelszó”: „jelszó”,
„Titok”: „jelszó”
kapcsolat = ConnectHandler (** device_config)
A fenti egyszerű kód használatával SSH-kapcsolatot fog létesíteni az eszközzel. A készülék adatait közvetlenül továbbíthatja a szótár helyett.
Miután megkapta az SSH munkamenetet, végrehajthatja a parancsokat a send_command () függvény segítségével. A netmiko által támogatott funkciók a következők:
A Netmiko általánosan alkalmazott módszerek:
- net_connect.send_command () - Ez a függvény parancsokat küld le egy hálózati csatornán, és a minta alapján adja vissza a kimenetet.
- net_connect.send_command_timing () - A hálózati csatornán küldött parancs időzítése alapján adja vissza a kimenetet.
- net_connect.send_config_set () - Konfigurációs beállításokat alkalmaz a távoli eszközökre.
- net_connect.send_config_from_file () - Konfigurációs beállításokat alkalmaz egy külső fájlból
- net_connect.save_config () - A futó konfigurációt exportálja és menti indítási konfigurációként.
- net_connect.enable () - Lekérdezi az eszközt az engedélyezési mód aktiválásához.
- net_connect.find_prompt () - Visszaadja az útválasztó aktuális parancssorát
- net_connect.comm () - parancsokat futtat olyan eszközökön, mint a Juniper és az IOS-XR
- net_connect.disconnect () - Megszakítja a munkameneteket
- net_connect.write_channel () - Engedélyezi az alacsony szintű írást
- net_connect.read_channel () - Engedélyezi az alacsony szintű olvasást.
Mint korábban említettük, ez nem egy útmutató a Netmiko használatához, hanem egy egyszerű útmutatás arról, hogy mi a Netmiko és a Paramiko. További információkért ellenőrizze a hivatalos dokumentációt.
https: // github.com / ktbyers / netmiko
Következtetés
Ebben a gyors útmutatóban megvitattuk, hogyan lehet a paramikót általános SSH kapcsolatokhoz és a Netmiko hálózati eszközkezeléshez használni, szemléltetve a kettő közötti különbségeket.
Következtetni:
Paramiko | Netmiko |
Hasznos általános ssh használatra | A leghasznosabb a hálózati eszköz konfigurálásához. |
Korlátozott támogatás a hálózati eszközök széles skálájához. | Támogatja a hálózati eszközök széles skáláját. |