Linux-verkonhallinta ja TCP/IP kehittäjille · Oppitunti

Python verkkoautomaatiota varten

Käytä `paramiko`- ja `netmiko`-kirjastojen kaltaisia Python-kirjastoja verkkolaitteiden käsittelyyn SSH:n kautta ja määritysten automatisointiin.

Oppitunti 2/411 vaihetta

Python verkkoautomaatiota varten on ilmainen Linux-verkonhallinta ja TCP/IP kehittäjille-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Linux-verkonhallinta ja TCP/IP kehittäjille-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Linux-verkonhallinta ja TCP/IP kehittäjille-kurssilla on yhteensä 4 oppituntia.

Python verkon automatisoinnissa

Tervetuloa automatisoimaan verkkoa Pythonilla! Python on tehokas ja monipuolinen kieli, minkä vuoksi se on suosittu verkkotehtävien automatisoinnissa.

Se yksinkertaistaa monimutkaisia toimintoja, auttaa hallitsemaan laitteita ja integroituu erilaisiin verkkorajapintoihin. Katsotaan, miten!

Paramikon esittely

Ensimmäinen työkalumme on Paramiko. Se on Python-kirjasto, joka toteuttaa SSHv2-protokollan. Sitä voi ajatella matalan tason työkalupakkina suojattuja shell-yhteyksiä (SSH) varten.

  • SSH-asiakas/palvelin: Voi toimia sekä asiakkaana että palvelimena.
  • Suojattu: Käyttää viestinnässä vahvaa salausta.
  • Monipuolinen: Sopii yleisiin SSH-tehtäviin, kuten komentojen suorittamiseen ja tiedostojen siirtämiseen.

Paramiko: SSH-yhteyden perusteet

Näin voitte käyttää Paramikoa etäpalvelimeen yhdistämiseen ja komennon suorittamiseen. Muistakaa vaihtaa paikkamerkkitunnistetiedot oikeisiin!

import paramiko

def connect_and_run(hostname, username, password, command):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    try:
        client.connect(hostname=hostname, username=username, password=password, timeout=5)
        stdin, stdout, stderr = client.exec_command(command)
        print(f"Output:\n{stdout.read().decode().strip()}")
        print(f"Errors:\n{stderr.read().decode().strip()}")
    except paramiko.AuthenticationException:
        print("Authentication failed, please check your credentials.")
    except paramiko.SSHException as e:
        print(f"SSH connection error: {e}")
    except Exception as e:
        print(f"An error occurred: {e}")
    finally:
        client.close()

if __name__ == "__main__":
    # Replace with your actual server details and command
    HOST = "your_server_ip"
    USER = "your_username"
    PASS = "your_password"
    CMD = "echo Hello from Paramiko!"
    
    print("Attempting to connect with Paramiko...")
    connect_and_run(HOST, USER, PASS, CMD)
    print("Note: This code won't connect without a live server and valid credentials.")

Komennon tulosteen käsittely

Kun suoritatte komennon client.exec_command(command), se palauttaa kolme tiedoston kaltaista objektia: stdin, stdout ja stderr.

  • stdout: Komennon vakiotuloste.
  • stderr: Komennon tuottamat virheilmoitukset.
  • stdin: Komennolle annettavan syötteen lähettämiseen käytettävä objekti (yksinkertaisessa exec-suorituksessa harvinaisempi).

Purkaa tuloste aina (esim. komennolla .decode()), koska se saadaan tavuina.

Paramiko tiedostonsiirtoihin (SFTP)

Paramiko tukee komentojen suorittamisen lisäksi myös SFTP:tä (SSH File Transfer Protocol). Sen avulla voitte kopioida tiedostoja turvallisesti etäjärjestelmiin ja etäjärjestelmistä.

Voitte käyttää sitä määritystiedostojen lataamiseen, lokien lataamiseen tai verkkolaitteiden ohjelmistopakettien hallintaan.

Netmikon esittely

Paramiko on tehokas, mutta tiettyjen verkkolaitteiden kanssa toimiminen edellyttää usein ylimääräistä logiikkaa kehotteiden, sivutuksen ja eri komentotilojen käsittelyyn. Tässä Netmiko loistaa!

  • Rakennettu Paramikon päälle: Käyttää Paramikoa taustalla.
  • Laitekohtainen: Tukee monia valmistajia (Cisco, Juniper, Arista jne.).
  • Yksinkertaistettu API: Käsittelee yleiset verkkolaitteiden kanssa tehtävät toiminnot automaattisesti.

Netmiko: yhteyden muodostaminen verkkolaitteisiin

Netmiko käyttää sanakirjaa laitteen tietojen määrittämiseen, mikä tekee yhteyksien muodostamisesta suoraviivaista. Se yksinkertaistaa monia verkkoautomaation tehtäviä.

from netmiko import ConnectHandler

def connect_with_netmiko(device_info):
    try:
        print(f"Attempting to connect to {device_info['host']} with Netmiko...")
        net_connect = ConnectHandler(**device_info)
        print(f"Successfully connected to {net_connect.base_prompt}")
        net_connect.disconnect()
        print("Disconnected from device.")
    except Exception as e:
        print(f"Netmiko connection error: {e}")

if __name__ == "__main__":
    # Replace with your actual device details
    device = {
        "device_type": "cisco_ios", # e.g., cisco_ios, juniper_junos, etc.
        "host": "your_device_ip",
        "username": "your_username",
        "password": "your_password",
        "secret": "your_enable_secret" # Optional, for enable mode
    }
    
    connect_with_netmiko(device)
    print("Note: This code won't connect without a live device and valid credentials.")

Netmiko: määritysten lähettäminen

Netmiko soveltuu erinomaisesti määrityskomentojen lähettämiseen. Käyttäkää komentoluetteloon send_config_set()-metodia ja operatiivisiin komentoihin send_command()-metodia.

from netmiko import ConnectHandler

def send_config_to_device(device_info, config_commands):
    try:
        print(f"Connecting to {device_info['host']} to send config...")
        net_connect = ConnectHandler(**device_info)
        
        print("Sending configuration commands...")
        output = net_connect.send_config_set(config_commands)
        print(f"Configuration Output:\n{output}")
        
        net_connect.disconnect()
        print("Disconnected.")
    except Exception as e:
        print(f"Netmiko config error: {e}")

if __name__ == "__main__":
    # Replace with your actual device details
    device = {
        "device_type": "cisco_ios",
        "host": "your_device_ip",
        "username": "your_username",
        "password": "your_password",
        "secret": "your_enable_secret"
    }
    
    # Example configuration commands
    config_lines = [
        "hostname CoddyRouter",
        "no ip domain lookup",
        "line vty 0 4",
        "login local"
    ]
    
    send_config_to_device(device, config_lines)
    print("Note: This code won't apply config without a live device and valid credentials.")

Parhaat käytännöt ja tietoturva

Kun automatisoitte toimintoja, asettakaa tietoturva ja toimintavarmuus aina etusijalle:

  • Tunnistetietojen hallinta: Älkää koskaan kirjoittako salasanoja suoraan koodiin. Käyttäkää ympäristömuuttujia, suojattuja holveja tai syötekehotteita.
  • Virheenkäsittely: Käyttäkää try-except-lohkoja yhteysongelmien tai komentovirheiden hallittuun käsittelyyn.
  • Lokitus: Kirjatkaa kaikki toiminnot ja tulosteet tarkastusta ja vianmääritystä varten.
  • Idempotenssi: Suunnitelkaa skriptit idempotenteiksi eli siten, että niiden suorittaminen useita kertoja tuottaa saman lopputuloksen kuin yksi suoritus.

Paramiko ja Netmiko

Olette tutustuneet sekä Paramikoon että Netmikoon. Testataan nyt, ymmärrättekö, milloin kumpaakin työkalua kannattaa käyttää verkkoautomaation tehtävissä.

Kertaus: Python verkkoautomaatiossa

Hienoa työtä! Tässä oppitunnissa opitte seuraavista aiheista:

  • Paramiko: Matalan tason Python-kirjasto yleisiin SSH-asiakas- ja -palvelintehtäviin sekä SFTP:hen.
  • Netmiko: Paramikon päälle rakennettu korkeamman tason kirjasto, joka on suunniteltu erityisesti eri verkkolaitteiden kanssa toimimisen automatisointiin.

Näiden työkalujen avulla voitte kirjoittaa tehokkaita Python-skriptejä verkkoinfrastruktuurin ohjelmalliseen hallintaan, määritysten tekemiseen ja valvontaan!

Aloita maksutta

Opi Linux-verkonhallinta ja TCP/IP kehittäjille tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Python verkkoautomaatiota varten” ilmainen?

Kyllä – oppitunnin ”Python verkkoautomaatiota varten” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Linux-verkonhallinta ja TCP/IP kehittäjille-kurssin, päivitä CoddyKit PROhon. Linux-verkonhallinta ja TCP/IP kehittäjille-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Python verkkoautomaatiota varten”?

Käytä `paramiko`- ja `netmiko`-kirjastojen kaltaisia Python-kirjastoja verkkolaitteiden käsittelyyn SSH:n kautta ja määritysten automatisointiin. Harjoittelet Linux-verkonhallinta ja TCP/IP kehittäjille-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Linux-verkonhallinta ja TCP/IP kehittäjille-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Linux-verkonhallinta ja TCP/IP kehittäjille-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Python verkkoautomaatiota varten”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Linux-verkonhallinta ja TCP/IP kehittäjille-oppitunnilla?

Kyllä. Jokainen Linux-verkonhallinta ja TCP/IP kehittäjille-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Bash-komentosarjat verkkokäyttöön
  2. Python verkkoautomaatiota varten
  3. REST-rajapinnat verkkolaitteille
  4. Verkon konfigurointi Ansiblella
← Takaisin: Linux-verkonhallinta ja TCP/IP kehittäjille