Thursday, November 21, 2024

Sử dụng Module Paramiko để Automation các thiết bị Cisco

-

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, usernamepassword 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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories