Module Paramiko là một thư viện Python được sử dụng để kết nối và tương tác với các thiết bị mạng qua giao thức SSH. Điều này cho phép bạn tự động hóa các tác vụ mạng, bao gồm cấu hình và quản lý các thiết bị Cisco.
Để tự động hoá cấu hình Cisco bằng module Paramiko, bạn có thể thực hiện các bước sau:
Cài đặt module Paramiko: Bạn có thể cài đặt module Paramiko bằng pip, một công cụ quản lý package của Python. Bạn có thể chạy lệnh sau để cài đặt module:
pip install paramiko
Kết nối đến thiết bị Cisco qua SSH: Bạn có thể sử dụng module Paramiko để thiết lập một kết nối SSH với thiết bị Cisco. Để làm điều này, bạn cần tạo một đối tượng SSHClient và sử dụng phương thức connect() để kết nối đến thiết bị.
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('ip_address', port=22, username='username', password='password')
Trong đoạn mã này, bạn cần thay thế ip_address
, username
và password
bằng thông tin kết nối của thiết bị Cisco của bạn.
Gửi lệnh cấu hình đến thiết bị Cisco: Sau khi thiết lập kết nối SSH, bạn có thể sử dụng phương thức exec_command() của đối tượng SSHClient để gửi các lệnh cấu hình đến thiết bị.
command = 'configure terminal\ninterface gigabitethernet0/0\nip address 10.0.0.1 255.255.255.0\nno shutdown\nexit\nexit\n'
stdin, stdout, stderr = ssh.exec_command(command)
Trong đoạn mã này, chúng ta đã sử dụng lệnh cấu hình để cấu hình một địa chỉ IP trên một giao diện GigabitEthernet và bật giao diện này. Sau đó, chúng ta sử dụng phương thức exec_command() để gửi các lệnh này đến thiết bị Cisco.
Ngắt kết nối: Sau khi hoàn tất các tác vụ, bạn nên ngắt kết nối với thiết bị Cisco để giải phóng tài nguyên.
ssh.close()
Đây là các bước cơ bản để tự động hoá cấu hình Cisco bằng module Paramiko. Tuy nhiên, khi làm việc với các thiết bị Cisco, bạn cần lưu ý thêm về cú pháp của các lệnh cấu hình và sử dụng đúng cú pháp.
Ví dụ cụ thể:
Mình sẽ sử dụng Module Paramiko để cấu hình các lệnh như sau:
vpc domain 1
peer-switch
role priority 10
peer-keepalive destination 10.0.0.2 source 10.0.0.1 vrf default
delay restore 10
peer-gateway
auto-recovery
ip arp synchronize
interface Vlan881
description email
no shutdown
no ip redirects
ip address 103.138.88.2/25
ipv6 address 2404:c6c0::2/117
no ipv6 redirects
hsrp version 2
hsrp 881
preempt
priority 90
ip 103.138.88.1
hsrp 881 ipv6
preempt
priority 90
ip 2404:c6c0::1
interface Vlan882
description hosting
no shutdown
no ip redirects
ip address 103.138.88.130/25
ipv6 address 2404:c6c0::1002/117
no ipv6 redirects
hsrp version 2
hsrp 882
preempt
priority 90
ip 103.138.88.129
hsrp 882 ipv6
preempt
priority 90
ip 2404:c6c0::1001
Sau đây là full code:
import paramiko
import time
# Thiết lập kết nối SSH đến thiết bị Cisco
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.1', username='admin', password='password')
# Gửi các câu lệnh cấu hình
commands = [
'conf t',
'vpc domain 1',
' peer-switch',
' role priority 10',
' peer-keepalive destination 10.0.0.2 source 10.0.0.1 vrf default',
' delay restore 10',
' peer-gateway',
' auto-recovery',
' ip arp synchronize',
'interface Vlan881',
' description email',
' no shutdown',
' no ip redirects',
' ip address 103.138.88.2/25',
' ipv6 address 2404:c6c0::2/117',
' no ipv6 redirects',
' hsrp version 2',
' hsrp 881',
' preempt',
' priority 90',
' ip 103.138.88.1',
' hsrp 881 ipv6',
' preempt',
' priority 90',
' ip 2404:c6c0::1',
'interface Vlan882',
' description hosting',
' no shutdown',
' no ip redirects',
' ip address 103.138.88.130/25',
' ipv6 address 2404:c6c0::1002/117',
' no ipv6 redirects',
' hsrp version 2',
' hsrp 882',
' preempt',
' priority 90',
' ip 103.138.88.129',
' hsrp 882 ipv6',
' preempt',
' priority 90',
' ip 2404:c6c0::1001',
'end'
]
for command in commands:
ssh.exec_command(command)
time.sleep(1) # đợi 1 giây giữa các lệnh
# Đóng kết nối SSH
ssh.close()
Đây là một ví dụ về cách sử dụng module Paramiko để tự động hoá cấu hình cho một thiết bị Cisco. Trước tiên, chúng ta thiết lập kết nối SSH đến thiết bị bằng cách sử dụng địa chỉ IP, tên đăng nhập và mật khẩu.
Sau đó, chúng ta gửi các lệnh cấu hình tới thiết bị. Các lệnh được lưu trữ trong một danh sách commands
. Chúng ta sử dụng một vòng lặp for để duyệt qua danh sách này và gửi từng lệnh tới thiết bị bằng phương thức exec_command
của đối tượng SSHClient. Trong quá trình gửi lệnh, chúng ta đợi 1 giây giữa các lệnh bằng cách sử dụng hàm time.sleep(1)
để đảm bảo rằng các lệnh được gửi một cách đồng bộ và không gây ra tình trạng quá tải cho thiết bị.
Cuối cùng, khi đã hoàn thành việc gửi các lệnh cấu hình, chúng ta đóng kết nối SSH đến thiết bị bằng phương thức close()
của đối tượng SSHClient.
Với mã này, bạn có thể tự động hoá các thao tác cấu hình trên các thiết bị Cisco một cách dễ dàng và tiết kiệm thời gian.