Python写网络监控

import psutil
import tkinter as tk

# 获取当前时间字符串
def get_current_time():
    return psutil.datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# 更新标签信息
def update_labels():
    disk_usage = psutil.disk_usage('/')
    memory_usage = psutil.virtual_memory()
    cpu_usage = psutil.cpu_percent(interval=1)
    net_info = psutil.net_io_counters()

    current_time = get_current_time()
    time_label.config(text=f'当前时间:{current_time}', font=('Helvetica', 14), fg='blue')
    disk_label.config(text=f'磁盘使用率:{disk_usage.percent}%', font=('Helvetica', 14), fg='green')
    memory_label.config(text=f'内存使用率:{memory_usage.percent}%', font=('Helvetica', 14), fg='green')
    cpu_label.config(text=f'CPU使用率:{cpu_usage}%', font=('Helvetica', 14), fg='green')
    disk_total_label.config(text=f'磁盘总量:{disk_usage.total / 1024 ** 3:.2f}GB', font=('Helvetica', 14), fg='green')
    disk_free_label.config(text=f'磁盘剩余量:{disk_usage.free / 1024 ** 3:.2f}GB', font=('Helvetica', 14), fg='green')
    disk_used_label.config(text=f'磁盘已使用量:{disk_usage.used / 1024 ** 3:.2f}GB', font=('Helvetica', 14), fg='green')
    recv_label.config(text=f'接收的数据量:{net_info.bytes_recv / 1024 ** 2:.2f}MB', font=('Helvetica', 14), fg='green')
    send_label.config(text=f'发送的数据量:{net_info.bytes_sent / 1024 ** 2:.2f}MB', font=('Helvetica', 14), fg='green')
    root.after(1, update_labels)  # 更新频率设为1秒

# 创建GUI窗口
root = tk.Tk()
root.title('网络监控')
root.geometry('400x400')

# 创建标题标签
title_label = tk.Label(root, text='网络监控', font=('Helvetica', 20), fg='blue', pady=10)
title_label.pack()

# 创建显示标签
labels_frame = tk.Frame(root)
labels_frame.pack(pady=20)

time_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='blue')
time_label.pack(pady=5)

disk_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_label.pack(pady=5)

memory_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
memory_label.pack(pady=5)

cpu_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
cpu_label.pack(pady=5)

disk_total_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_total_label.pack(pady=5)

disk_free_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_free_label.pack(pady=5)

disk_used_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_used_label.pack(pady=5)

recv_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
recv_label.pack(pady=5)

send_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
send_label.pack(pady=5)

# 启动监控循环
update_labels()

# 运行GUI主循环
root.mainloop()

主要功能是实时显示磁盘使用率、内存使用率、CPU使用率以及网络接收和发送的数据量。使用了psutil库来获取系统的相关信息,并使用tkinter库创建了一个简单的GUI窗口。

程序通过调用psutil.disk_usage('/')来获取磁盘使用率,psutil.virtual_memory()来获取内存使用率,psutil.cpu_percent(interval=1)来获取CPU使用率,以及psutil.net_io_counters()来获取网络接收和发送的数据量。

GUI窗口中包含了一个标题标签和多个显示标签,显示标签用来实时更新和显示各项信息。update_labels()函数用来更新标签信息,其中包括获取当前时间、磁盘使用率、内存使用率、CPU使用率、磁盘总量、磁盘剩余量、磁盘已使用量、接收的数据量和发送的数据量,并在标签上显示出来。

最后,通过调用root.mainloop()进入GUI的主循环,以启动程序。程序会不断更新标签信息,以实现实时监控的效果。

非常重要的一点是,我们要明确使用计算机和编程技术的目的是为了学习和测试,而不是进行非法攻击或者违法行为。编写和使用代码时,我们必须遵守法律法规,并且获得相关授权。如果您有合法的目的和授权,那么可以继续进行测试和使用。但是,如果您违反了法律法规或者未经授权使用,后果将由您自己承担。请务必谨慎行事,遵守法律规定,以确保计算机和网络的安全。
© 版权声明
THE END
喜欢就支持一下吧!
点赞414 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容