Dùng Python thực hiện SSH & cấu hình trên thiết bị mạng bằng Netmiko -

Dùng Python thực hiện SSH & cấu hình trên thiết bị mạng bằng Netmiko -

Dùng Python thực hiện SSH & cấu hình trên thiết bị mạng bằng Netmiko -

Dùng Python thực hiện SSH & cấu hình trên thiết bị mạng bằng Netmiko -

Dùng Python thực hiện SSH & cấu hình trên thiết bị mạng bằng Netmiko -
Dùng Python thực hiện SSH & cấu hình trên thiết bị mạng bằng Netmiko -
(028) 35124257 - 0933 427 079

Dùng Python thực hiện SSH & cấu hình trên thiết bị mạng bằng Netmiko

23-02-2022

Mô hình mạng :

Gồm 1 máy ảo kali linux , 1 router cisco giả lập trên gns3.

1. cấu hình trên Router R1

1.1 cấu hình SSH version 2

#config terminal
(config)#enable password password
(config)#line vty 0 4
(config-line)#password 123
(config-line)#login local
(config-line)#exit

(config)#username vnpro password 123
(config)#ip domain-name vnpro
(config)#crypto key generate rsa
The name for the keys will be: R1.vnpro .Choose the size of the key modulus in the range of 360 to 2048 for your General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes.How many bits in the modulus [512]: 1024
(config)#ip ssh version 2

R1(config)#interface fastEthernet 0/0

R1(config-if)#ip address dhcp

R1(config-if)#no shutdown

R1(config-if)#exit

  • Thực hiện kiểm tra địa chỉ IP của interface fastEthenet 0/0
  •  

FastEthernet0/0 is up, line protocol is up

Internet address is 192.168.186.131/24

Broadcast address is 255.255.255.255

Address determined by DHCP

2. trên kali

Yêu cầu cần : đã cài ssh và python3

2.1 thực hiện kiểm tra kết nối SSH vào R1

            ssh vnpro@192.168.186.131

+ Nếu có lỗi

"

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

" , thực hiện lệnh sau:

            ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.186.131"      

+ Nếu có lỗi "no matching key exchange method found. Their offer: diffie-hellman-group1-sha1" :

            ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 vnpro@192.168.186.131

+ Nếu có lỗi "no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc":

            Truy cập vào file :

                        vi /etc/ssh/ssh_config

            Thêm vào cuối file :

                        Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

=> Thực hiện kiểm tra lại kết nối ssh

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 vnpro@192.168.186.131

The authenticity of host '192.168.186.131 (192.168.186.131)' can't be established.

RSA key fingerprint is SHA256:HSxD9Pak+WFl1W2NxJpJdhfTkhyu2Thi2MiiPk4SWBs.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '192.168.186.131' (RSA) to the list of known hosts.

vnpro@192.168.186.131's password: [Nhập 123] (username vnpro password 123)

R1>enable

Password: [Nhập password] (enable password password)

  • Kết nối SSH vào Router R1 thành công

2.2 cài đặt thư viện netmiko

Yêu cầu : máy ảo kali truy cập được Internet .

Thực hiện lệnh : sudo apt-get install python3-netmiko

(Nhập Y để tiếp tục quá trình cài đặt)

2.3 lập trình python sử dụng thư viện netmiko để thực hiện ssh và cấu hình địa chỉ IP cho interface

2.3.1 tạo file python 

vi addIPInterface.py

2.3.2 thiết lập SSH

from netmiko import ConnectHandler

R1 = { 'device_type':'cisco_ios',

        'host': '192.168.186.131',

        'username':'vnpro',

        'password':'123',

        'secret':'password', }

net_connect = ConnectHandler(**R1)

Gọi hàm ConnectHandler trong thư viện netmiko bằng dòng lệnh :
                                    From netmiko import ConnectHandler


,trong đó hàm ConnectHandler bao gồm các giá trị:
+ device_type: các thiết bị của cisco thuờng là ‘cisco_ios’
+ host: IP của thiết bị
+ username: tên đăng nhập
+ password: mật khẩu đăng nhập
+ secret : mật khẩu enable
gán giá trị khi thực hiện hàm ConnectHandler cho biến net_connect .
Tới đây chúng ta đã thiết lập thành công SSH bằng netmiko .

2.2.3 sử dụng một số hàm trong thư viện netmiko

- Để gửi 1 câu lệnh đến Router/Switch qua SSH ở Privileged EXEC mode , ta dùng hàm send_commnad(), VD:

            output = net_connect.send_command('sh ip int bri')

print(output)

- Để vào Privileged EXEC mode , ta dùng hàm enable() , VD :

 net_connect.enable()

- Để gửi 1 câu lệnh đến Router/Switch ở config mode ta dùng hàm send_config_set(), VD:

net_connect.enable()

addIPInterface = ['int f1/0','ip add 192.168.186.133 255.255.255.0','no shut']

net_connect.send_config_set(addIPInterface)

Một số lệnh khác thường dùng :
net_connect.save_config() - lưu cấu hình
net_connect.find_prompt() - trả về tên host R/Sw
net_connect.disconnect() - Đóng kết nối

2.3.4 File cấu hình về kết quả thực thi

File addIPInterface.py như sau :

Thực hiện chạy file addIPInterface.py :

#python3 addIPInterface.py

Kết quả :

  • Ta đã thực hiện thành công cấu hình IP cho 1 interface trên router R1 thông qua sử dụng thư viện netmiko trong python.

FORM ĐĂNG KÝ MUA HÀNG
Đặt hàng
icon-cart
0