Netmiko

1 minute read

Netmiko, Kirk Byers (CCIE) tarafından network cihazlarının yönetimini kolaylaştırmak amacıyla Python’ın Paramiko isimli ssh kütüphanesi üzerine yazılmış, pek çok network mühendisinin severek kullandığı bir Python modülüdür. Daha sonradan telnet için de bu modülü geliştirmiş ve Netmiko’ya da eklemiş ama kütüphanenin isminde bu yönde bir değişiklik yapmamış. :)

Modülün sisteminizde halihazırda olup olmadığını görmek için python interactive shell’de import netmiko yazarak test edebilir, sisteminize yüklemek için terminal ya da command prompt’ta pip install netmiko komutunu çalıştırabilirsiniz.

Örnek

Aşağıdaki örnek kod bir test cihazına bağlanıp show version çıktısı alacak.

from netmiko import Netmiko

cisco1 = {
    "host": "192.168.1.1",
    "username": "cisco",
    "password": "cisco",
    "device_type": "cisco_ios",
}

net_connect = Netmiko(**cisco1)
command = "show version"

print(net_connect.find_prompt())
output = net_connect.send_command(command)
net_connect.disconnect()
print(output)

Çıktı tahmin ettiğiniz gibi. Sadece ilk paragrafını kopyalıyorum:

P1#
Cisco IOS Software, IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.6(2)T, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2016 by Cisco Systems, Inc.
Compiled Tue 22-Mar-16 16:19 by prod_rel_team

Bir de cihaza config girelim:

from netmiko import Netmiko

cisco1 = {
    "host": "192.168.1.1",
    "username": "cisco",
    "password": "cisco",
    "device_type": "cisco_ios",
}

net_connect = Netmiko(**cisco1)
commands = ["hostname P1"]

output = net_connect.send_config_set(commands)
net_connect.disconnect()
print(output)

Çıktı aşağıdaki gibi:

gunhan@gunhanoral:/tmp$ python netmiko_test.py
config term
Enter configuration commands, one per line.  End with CNTL/Z.
P1(config)#
P1(config)#hostname P1
P1(config)#
P1(config)#end
P1#
P1#

Görebileceğiniz üzere kullanımı gayet basit bir modül. Tek kritik nokta cihaz tipini belirlemek. Cihaz tipinin sonuna “_telnet” eklerseniz telnet bağlantısı yapar, cihaz tipi olarak “autodetect” yazarsanız cihaz tipini kendisi bulmaya çalışır, username ve password girmezseniz cihaza da girmez vs vs. Detayları burada bulabilirsiniz.

Örnek:

cisco1 = {
    "ip": "192.168.1.1",
    "port": 5002,
    "device_type": "cisco_ios_telnet", # ya da "device_type": "autodetect"
}

Şu anda desteklediği cihazları aşağıda listeledim. Yanlış bir device_type girdiğinizde zaten bu listeyi çıkartıyor.

a10
accedian
alcatel_aos
alcatel_sros
apresia_aeos
arista_eos
aruba_os
avaya_ers
avaya_vsp
brocade_fastiron
brocade_netiron
brocade_nos
brocade_vdx
brocade_vyos
calix_b6
checkpoint_gaia
ciena_saos
cisco_asa
cisco_ios
cisco_nxos
cisco_s300
cisco_tp
cisco_wlc
cisco_xe
cisco_xr
coriant
dell_dnos9
dell_force10
dell_isilon
dell_os10
dell_os6
dell_os9
dell_powerconnect
eltex
enterasys
extreme
extreme_ers
extreme_exos
extreme_netiron
extreme_nos
extreme_slx
extreme_vdx
extreme_vsp
extreme_wing
f5_linux
f5_ltm
f5_tmsh
fortinet
generic_termserver
hp_comware
hp_procurve
huawei
huawei_vrpv8
ipinfusion_ocnos
juniper
juniper_junos
linux
mellanox
mrv_optiswitch
netapp_cdot
netscaler
oneaccess_oneos
ovs_linux
paloalto_panos
pluribus
quanta_mesh
rad_etx
ruckus_fastiron
ubiquiti_edge
ubiquiti_edgeswitch
vyatta_vyos
vyos

Leave a comment