Xin chào các bạn ở bài viết trước mình đã giới thiệu với các bạn cách back up cấu hình Cisco lên TFTP tự động bằng Python. Ở bài viết này mình sẽ hướng dẫn các bạn gửi cấu hình sau khi back up từ TFTP lên Telegram.
Sơ đồ Demo:
1. Yêu cầu:
- Các thiết bị Cisco đã được Cấu hình SSH (Khuyến nghị cấu hình SSH version 2).
- Windows đã cài TFTP Server và Python.
- Tạo Bot trên Telegram.
- Code Python auto Backup cấu hình Cisco lên TFTP Server.
- Xem thêm:
2. Lấy thông tin Bot trên Telegram:
- Sau khi đã tạo Bot xong và Add bot vào Group Chat ta tiến hành các bước sau:
- Bước 1: Tại box chat của @BotFather copy Token HTTP API.
- Bước 2: Đăng nhập Telegram trên web để lấy Chat-ID của Group Chat sẽ gửi backup lên.
- Lưu lại thông tin Token và Chat-ID để thêm vào code.
3. Cài đặt thêm các thư viện cần thiết:
- Nhấn tổ hợp phím Windows + R Nhập vào cmd. Sau đó Enter để mở Command Line.
pip install requests
4. Code Python để gửi cấu hình lên Telegram:
- Sử dụng trình soạn thảo văn bản bất kì để code. Ở đây mình sử dụng Sublime Text.
# Import các thư viện cần thiết:
from netmiko import ConnectHandler
from datetime import datetime
import requests
from requests import post
from datetime import date
# Khai báo thông tin các thiết bị sẽ backup.
Router_HCM = {
'device_type': 'cisco_ios',
'ip': '10.10.10.1',
'username': 'admin',
'password': 'admin',
'verbose': False,
}
Switch_HCM = {
'device_type': 'cisco_ios',
'ip': '10.10.10.2',
'username': 'admin',
'password': 'admin',
'verbose': False,
}
all_devices=[Router_HCM,Switch_HCM]
# Khai báo biến dùng để lấy ngày tháng năm
current_time=datetime.now()
current_date=current_time.strftime("%d")
current_month=current_time.strftime("%m")
current_year=current_time.strftime("%Y")
# Thực hiện SSH đến từng thiết bị và backup cấu hình lên TFTP Server:
for devices in all_devices:
net_connect=ConnectHandler(**devices)
net_connect.enable()
command="copy running-config tftp://10.10.10.3/"
send_bk_command = net_connect.send_command_timing(command)
if ("Address or name of remote host" in send_bk_command):
send_Enter= net_connect.send_command_timing("\n")
if ("Destination filename" in send_Enter):
index1=send_Enter.find("[")+1
index2=send_Enter.find("]")
device_hostname=send_Enter[index1:index2]
#Khai báo tên file để gửi lên TFTP Server
send_Filename= net_connect.send_command_timing(device_hostname+"_"+current_date+"_"+current_month+"_"+current_year)
#Khai báo biến chứa tên file vừa tạo
current_file_name=str(device_hostname+"_"+current_date+"_"+current_month+"_"+current_year)
if ("Error" in send_Filename):
print (send_Filename)
print("Success "+device_hostname)
#Gửi file cấu hình lên telegram
today = date.today()
files={'document':open('C:\\TFTP-Root\\{}'.format(current_file_name))}
respond = requests.post('https://api.telegram.org/bot<Token>/sendDocument?chat_id=<chat-ID>'.format(today),files=files)
Lưu ý: thay thế <Token> và <chat-ID> tương ứng.
5. Cho phép chạy TFTP Service trên Windows:
- Để TFTP có thể chạy được trên Windows chúng ta phải tắt hoặc cho phép dịch vụ mở trên Windows Defender Firewall. Vì mục đích demo mình sẽ thực hiện Tắt Windows Defender Firewall.
- Vào Control Panel => Windows Defender Firewall => Turn Windows Defender Firewall on or off.
- Chọn Turn off Windows Defender Firewall.
6. Khởi chạy File Code:
- Nhấn tổ hợp phím Windows + R Nhập vào cmd. Sau đó Enter để mở Command Line.
- Di chuyển tới vị trí chứa file bằng câu lệnh:
cd <path>
- Nhập tên file kèm định dạng file.
- Và đây là kết quả hiển thị trong Command Line:
- Kiểm tra TFTP-Server. Mặc định file sẽ được lưu ở C:\TFTP-Root\
- Kiểm tra Group Chat trên Telegram:
7. Cài đặt để File Code chạy tự động mỗi ngày
- Trên Windows:
- Bước 1: Để có thể chạy File Code hằng ngày chúng ta sẽ sử dụng Task Scheduler
- Bước 2: Click phải vào Task Scheduler Library. Chọn Create Basic Task…
- Bước 3: Đặt tên cho Task và chọn Next.
- Bước 4: Chọn tần suất chạy File Code.
- Bước 5: Chọn ngày bắt đầu chạy và thời gian chạy mỗi ngày. Chọn Next.
- Bước 6: Chỉ định Task này sẽ làm gì. Do ta đang cần chạy Script lên sẽ chọn Start a program.
- Bước 7: Chọn đường dẫn tới Script.
- Bước 8: Chọn Finish để hoàn tất cài đặt.
- Vậy là ta đã thành công Backup cấu hình các thiết bị Cisco lên TFTP Server và gửi file Backup lên Telegram. Chúc các bạn thành công.
Author: Trí Tạ
Đăng nhận xét