Header Ads Widget

Hosting Hosting lưu trữ miễn phí

Ticker

3/recent/ticker-posts

Hướng Dẫn Tạo Script Kiểm Tra Mạng Tự Động Trên VPS Ubuntu - Cảnh Báo Qua Telegram



Bạn đang quản lý hệ thống mạng và muốn đảm bảo rằng mọi thứ luôn hoạt động ổn định? Việc tự động giám sát kết nối mạng và nhận cảnh báo ngay lập tức khi có sự cố là một giải pháp tuyệt vời. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách tạo một script Python đơn giản để kiểm tra kết nối IP WAN (địa chỉ mạng đơn vị mà bạn đang quản lý) trên VPS Ubuntu và gửi cảnh báo qua Telegram cá nhân nếu có sự cố.

 {tocify} $title = {Mục lục bài viết} 

1. Chuẩn Bị Môi Trường

Trước tiên, bạn cần chuẩn bị một VPS Ubuntu để chạy script. Nếu bạn chưa có VPS, hãy tham khảo các tùy chọn VPS miễn phí như Google Cloud Platform, AWS Free Tier, hoặc Oracle Cloud.

Trong bài viết này tôi dùng VPS Ubuntu cài trên Oracle Cloud Free. Bạn có thể xem bài viết này để đăng ký VPS Oracle Cloud miễn phí không thời hạn và cách cài đặt Ubuntu trên VPS Oracle Cloud

Ngoài ra bạn có thể tham khảo thêm Top 6 dịch vụ VPS miễn phí tốt nhất hiện nay

2. Kết Nối Với VPS

Kết nối với nhanh VPS của bạn bằng SSH:

ssh username@your_vps_ip

Hãy thay thế `username` và `your_vps_ip` bằng thông tin tài khoản và địa chỉ IP của VPS của bạn.

Ngoài ra bạn có thể dùng MobaXterm , PuTTY hoặc phần mềm bất kỳ để quản lý máy ảo của bạn thông qua SSH. Xem hướng dẫn này để biết cách cài đặt và sử dụng phần mềm Mobaxterm.

3. Cài Đặt Python và Thư Viện Telegram

Đảm bảo rằng bạn đã cài đặt Python và thư viện cần thiết để gửi tin nhắn Telegram:

sudo apt update sudo apt install python3 -y sudo apt install python3-pip -y pip3 install python-telegram-bot

4. Tạo bot trên Telegram

  1. Tạo bot (nếu bạn chưa tạo):

    • Mở Telegram, và tìm @BotFather.
    • /start và sau đó gõ /newbot để tạo một bot mới.
    • Đặt tên và username cho bot. Sau khi tạo, BotFather sẽ cung cấp cho bạn token của bot.
  2. Gửi tin nhắn tới bot của bạn:

    • Tìm bot của bạn trên Telegram bằng cách tìm kiếm theo username bot mà bạn vừa tạo.
    • Bắt đầu cuộc trò chuyện với bot của bạn bằng cách nhấn vào start và gửi một tin nhắn bất kỳ (ví dụ: "Hello").
  3. Lấy CHAT_ID bằng cách sử dụng API Telegram:

    Truy cập vào URL sau để lấy thông tin về các tin nhắn gần đây mà bot của bạn đã nhận:

    https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates

    Thay <YOUR_BOT_TOKEN> bằng token bot của bạn. 

    Ví dụ:

    https://api.telegram.org/botABC-DEF1234ghIkl-zyx57W2v1u123ew11/getUpdates

    Truy cập URL này trong trình duyệt. Bạn sẽ thấy một phản hồi dạng JSON chứa thông tin về các tin nhắn gần đây, bao gồm chat_id.

  4. Tìm chat_id trong phản hồi JSON:

    Trong phản hồi JSON, tìm phần có cấu trúc như sau:

    { "update_id": 123456789, "message": { "message_id": 1, "from": { "id": 123456789, "is_bot": false, "first_name": "YourName", "language_code": "en" }, "chat": { "id": 123456789, "first_name": "YourName", "type": "private" }, "date": 1633727460, "text": "Hello" } } 

chat.id chính là CHAT_ID mà bạn cần. Trong ví dụ trên, chat.id123456789.

Đến đây bạn đã có TOKENCHAT_ID lưu lại thông tin để thay vào  thông số file Script bên dưới

5. Tạo Script Python Kiểm Tra Kết Nối IP WAN

Bây giờ, bạn sẽ tạo một script Python để kiểm tra kết nối đến các IP WAN và gửi cảnh báo qua Telegram nếu không thể kết nối.

Mở trình soạn thảo văn bản và tạo một file mới:

sudo apt-get install nano
sudo nano check_wan_ping.py

Dán đoạn mã sau vào file:

import os import subprocess from telegram import Bot # Thông tin bot Telegram TOKEN = 'YOUR_BOT_TOKEN' CHAT_ID = 'YOUR_CHAT_ID' def ping_ip(ip): try: output = subprocess.check_output(f"ping -c 1 {ip}", shell=True) return True if "1 received" in output.decode('utf-8') else False except subprocess.CalledProcessError: return False def send_telegram_message(message): bot = Bot(token=TOKEN) bot.send_message(chat_id=CHAT_ID, text=message) def main(): ip_wan_1 = "10.0.2.1" ip_wan_2 = "10.0.2.2" # Kiểm tra kết nối với IP WAN 1 if not ping_ip(ip_wan_1): send_telegram_message(f"Cảnh báo: Không thể kết nối đến IP WAN {ip_wan_1}") # Kiểm tra kết nối với IP WAN 2 if not ping_ip(ip_wan_2): send_telegram_message(f"Cảnh báo: Không thể kết nối đến IP WAN {ip_wan_2}") if __name__ == "__main__": main()

Giải thích:

- Thay thế `YOUR_BOT_TOKEN` và `YOUR_CHAT_ID` bằng token và chat ID của bạn trên Telegram. Bạn có thể lấy token và chat ID bằng cách tạo một bot với BotFather và gửi tin nhắn cho bot để lấy chat ID.

- Script này sẽ kiểm tra kết nối đến hai địa chỉ IP WAN (`10.0.2.1` và `10.0.2.2`). Nếu không thể kết nối đến một trong hai địa chỉ IP, nó sẽ gửi cảnh báo đến bạn qua Telegram.

Lưu và thoát khỏi trình soạn thảo (với Nano, nhấn `Ctrl + X`, sau đó nhấn `Y` và `Enter`).

6. Chạy Thử Script

Chạy script để đảm bảo rằng nó hoạt động đúng:

python3 check_wan_ping.py

Nếu script hoạt động, bạn sẽ nhận được tin nhắn trên Telegram nếu không thể kết nối đến một trong hai IP WAN.


7. Tự Động Hóa Với Cron Job

Để tự động chạy script này mỗi vài phút và giám sát mạng liên tục, bạn cần thiết lập một cron job:

crontab -e

Nếu đây là lần đầu bạn chỉnh sửa crontab, hệ thống sẽ yêu cầu bạn chọn trình soạn thảo. Hãy chọn Nano (bằng cách nhập `1` và nhấn `Enter`).

Thêm dòng sau vào cuối file crontab:

*/5 * * * * /usr/bin/python3 /home/ubuntu/check_wan_ping.py

Thay thế `/home/ubuntu/check_wan_ping.py` bằng đường dẫn đầy đủ đến script Python của bạn. Dòng này sẽ thiết lập script kiểm tra mạng chạy tự động mỗi 5 phút.

Lưu và thoát khỏi crontab (với Nano, nhấn `Ctrl + X`, sau đó nhấn `Y` và `Enter`).



8. Kiểm Tra Cron Job

Cuối cùng, kiểm tra cron job đã được thêm thành công chưa bằng lệnh:

crontab -l

Bạn sẽ thấy cron job đã được lên lịch, và từ giờ, script sẽ tự động chạy định kỳ để kiểm tra kết nối mạng của bạn và gửi cảnh báo qua Telegram khi cần thiết.

 Kết Luận

Với hướng dẫn chi tiết trên, bạn đã thiết lập thành công một hệ thống giám sát mạng tự động trên VPS Ubuntu. Việc này giúp bạn phát hiện sớm các sự cố mạng và có phản ứng kịp thời, đảm bảo hoạt động liên tục cho hệ thống của mình.

Hãy thử và chia sẻ trải nghiệm của bạn trong phần bình luận bên dưới!


Đăng nhận xét

0 Nhận xét