Để tạo một ứng dụng kiểm tra traffic của card mạng cho Ubuntu và CentOS bằng Python3, bạn có thể sử dụng thư viện psutil để thu thập thông tin về traffic và threading để thực hiện các tác vụ trong nền. Đoạn script này có chức năng kiểm tra traffic của card mạng trên Ubuntu và CentOS và gửi thông báo đến tài khoản Telegram nếu traffic liên tiếp bằng 0 trong 3 lần hoặc traffic từ 0 chuyển sang khác 1.
Dưới đây là một ví dụ đơn giản về ứng dụng kiểm tra traffic của card mạng và để làm được điều này, script sử dụng các thư viện sau:
- psutil: để lấy thông tin về traffic của card mạng.
- telebot: để gửi thông báo đến tài khoản Telegram.
- threading: để thực hiện các tác vụ trong nền.
import psutil
import threading
import time
# Hàm kiểm tra traffic của card mạng
def check_network_traffic():
while True:
# Lấy thông tin về traffic của card mạng
net_io_counters = psutil.net_io_counters(pernic=True)
for interface, stats in net_io_counters.items():
# In ra thông tin về traffic của card mạng
print(f"{interface}:"
f" Bytes sent: {stats.bytes_sent}"
f" Bytes received: {stats.bytes_recv}"
f" Packets sent: {stats.packets_sent}"
f" Packets received: {stats.packets_recv}")
# Ngủ trong 1 giây trước khi kiểm tra lại
time.sleep(1)
# Tạo một thread để chạy hàm kiểm tra traffic của card mạng trong nền
network_traffic_thread = threading.Thread(target=check_network_traffic)
network_traffic_thread.daemon = True
network_traffic_thread.start()
# Chờ ứng dụng chạy trong nền
while True:
time.sleep(1)
Trong ví dụ này, hàm check_network_traffic
sử dụng psutil.net_io_counters
để lấy thông tin về traffic của các card mạng trên máy tính và in ra kết quả. Hàm này được thực thi trong một thread và chạy liên tục trong nền.
Ở phần chính của ứng dụng, chúng ta tạo một thread để chạy hàm check_network_traffic
trong nền. Sau đó, chúng ta sử dụng vòng lặp vô hạn để chờ cho thread chạy trong nền. Trong mỗi vòng lặp, chúng ta ngủ trong 1 giây để giảm tải cho CPU.
Dưới đây là giải thích chi tiết về cách hoạt động của script:
- Đầu tiên, script sẽ khởi tạo các biến cần thiết, bao gồm:
bot_token
(mã token của bot Telegram),chat_id
(ID của người nhận thông báo),previous_traffic
(traffic trước đó của card mạng),no_traffic_count
(số lần traffic liên tiếp bằng 0) vàis_first_check
(biến boolean xác định xem đây là lần kiểm tra đầu tiên hay không). - Tiếp theo, script sử dụng hàm
get_ip_address
để lấy địa chỉ IP của card mạng. Để làm điều này, script sử dụng thư viện socket và lặp qua các địa chỉ IP được trả về bởi hàmpsutil.net_if_addrs()
. - Sau đó, script khởi tạo một đối tượng
telebot.TeleBot
để sử dụng API của Telegram và gửi thông báo. - Tiếp theo, script định nghĩa một hàm
check_network_traffic
để kiểm tra traffic của card mạng. Hàm này sử dụngpsutil.net_io_counters
để lấy thông tin về traffic của card mạng và so sánh với traffic trước đó. Nếu traffic liên tiếp bằng 0 trong 3 lần hoặc traffic từ 0 chuyển sang khác 1, script sẽ gửi thông báo đến tài khoản Telegram. - Trong hàm
check_network_traffic
, nếu traffic liên tiếp bằng 0 trong 3 lần hoặc traffic từ 0 chuyển sang khác 1, script sẽ gửi thông báo đến tài khoản Telegram bằng cách sử dụng hàmbot.send_message
. - Trong hàm
check_network_traffic
, nếu traffic khác 0, script sẽ cập nhật giá trị củaprevious_traffic
vàno_traffic_count
. - Tiếp theo, script sử dụng hàm
time.sleep
để ngủ trong 1 giây trước khi kiểm tra lại. - Cuối cùng, script tạo một thread để chạy hàm
check_network_traffic
trong nền và sử dụng hàmthreading.Event()
để dừng thread khi script được dừng lại. - Khi script được dừng lại (ví dụ như khi người dùng nhấn Ctrl+C), script sẽ gửi thông báo đến tài khoản Telegram để thông báo rằng script đã bị dừng lại.
Tóm lại, script này sử dụng psutil để lấy thông tin về traffic của card mạng và telebot để gửi thông báo đến tài khoản Telegram. Nó cũng sử dụng threading để chạy các tác vụ trong nền và threading.Event() để dừng thread khi script được dừng lại. Script này sẽ giúp bạn theo dõi traffic của card mạng và cảnh báo nếu traffic bị gián đoạn hoặc đột ngột thay đổi.