Quản trị các thiết bị mạng bằng script python.



Hiện nay quản trị mạng đang chuyển hướng quản trị các thiết bị Switch, Router, Firewall, ... từ màn hình GUI sang command line hoặc scripting bằng ngôn ngữ nào đó.

Ví dụ trong bài viết này mình dùng python để kết nối ssh vào 1 Linux server sử dụng ssh key để authentication.

Thư viện python được dùng là : Netmiko.

Yêu cầu : Python 3.6+
Cài đặt thư viện: pip3 install Netmiko

#!/usr/bin/env python
from netmiko import Netmiko
from getpass import getpass

key_file = "/Users/thanh.nguyenvan/Downloads/ssh.pem"

cisco1 = {
    "device_type": "linux",
    "host": "abcabc",
    "username": "ubuntu",
    "use_keys": True,
    "key_file": key_file
#    "ssh_config_file": "",
}

net_connect = Netmiko(**cisco1)
print(net_connect.find_prompt())
output = net_connect.send_command("ls -ls source/")

print(output)

Lưu đoạn script trên thành: connect_ssh.py

Và chạy: python3 connect_ssh.py

Output ra sẽ là : 

ubuntu@ip-10-0-4-4:~$
total 16
4 drwxr-xr-x  2 root   root   4096 Feb 26 07:14 certificate
4 -rw-r--r--  1 ubuntu ubuntu  983 Feb 25 01:08 card-mvc.xml
4 drwxrwxr-x 11 ubuntu ubuntu 4096 Feb 26 07:01 batch-gps
4 drwxr-xr-x 10 root   root   4096 Jan  9 07:27 link


Chú ý là : 
device_type phải trong list support của thư viện Netmiko :

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
cloudgenix_ion
coriant
dell_dnos9
dell_force10
dell_isilon
dell_os10
dell_os6
dell_os9
dell_powerconnect
eltex
eltex_esr
endace
enterasys
extreme
extreme_ers
extreme_exos
extreme_netiron
extreme_nos
extreme_slx
extreme_vdx
extreme_vsp
extreme_wing
f5_linux
f5_ltm
f5_tmsh
flexvnf
fortinet
generic_termserver
hp_comware
hp_procurve
huawei
huawei_vrpv8
ipinfusion_ocnos
juniper
juniper_junos
juniper_screenos
keymile
keymile_nos
linux
mellanox
mellanox_mlnxos
mikrotik_routeros
mikrotik_switchos
mrv_lx
mrv_optiswitch
netapp_cdot
netscaler
nokia_sros
oneaccess_oneos
ovs_linux
paloalto_panos
pluribus
quanta_mesh
rad_etx
ruckus_fastiron
ruijie_os
ubiquiti_edge
ubiquiti_edgeswitch
vyatta_vyos
vyos








Nhận xét

Bài đăng phổ biến từ blog này

Trang web medium.com chết, vì sao ?

Cách sử dụng sys.argv trong python.

Thiết kế một RESTful API bằng python và flask.