Python写端口查询进程工具

admin 2024年2月4日09:49:46评论5 views字数 3436阅读11分27秒阅读模式

Python写端口查询进程工具

在日常生活中需要快速找到占用特定端口的进程,以便进行故障排查,可以通过以下工具输入要查询的端口号并点击查找按钮。该工具会遍历系统中的进程,找到占用该端口的进程,并显示相关信息,如进程ID、进程名、命令行、创建时间、进程状态和进程用户名。通过这个工具,可以快速定位问题,并进行进一步的故障排查和管理操作。

代码:

import psutil
import tkinter as tk
from tkinter import messagebox

def find_process_by_port():
    port = entry.get()
    if not port.isdigit():
        messagebox.showerror("错误", "请输入正确的端口号")
        return
    port = int(port)
    
    processes = []
    for proc in psutil.process_iter():
        processes.append(proc)

    for proc in processes:
        for conn in proc.connections():
            if conn.laddr.port == port and conn.status == "LISTEN":
                result = f"占用端口 {port} 的进程 ID 为: {proc.pid}\n"
                result += f"占用端口 {port} 的进程信息:\n"
                result += f"进程ID: {proc.pid}\n"
                result += f"进程名: {proc.name()}\n"
                result += f"命令行: {' '.join(proc.cmdline())}\n"
                result += f"创建时间: {proc.create_time()}\n"
                result += f"进程状态: {proc.status()}\n"
                result += f"进程用户名: {proc.username()}\n\n"
                result_label.config(text=result)
                return

    result_label.config(text="未找到占用指定端口的进程")

def show_help():
    help_window = tk.Toplevel(window)
    help_window.title("帮助信息")
    help_window.geometry("630x580")
    help_window.configure(bg="#F0F0F0")

    help_text = """
    20:FTP数据端口
    21:FTP控制端口
    22:SSH(Secure Shell)远程登录协议
    23:Telnet远程登录协议
    25:SMTP(Simple Mail Transfer Protocol)邮件传输协议
    53端口:用于DNS(Domain Name System,域名系统),用于将域名转换为IP地址。
    67和68端口:分别用于BOOTP(Bootstrap Protocol)服务,用于自动配置网络设备。
    69端口:用于TFTP(Trivial File Transfer Protocol),也用于简单的文件传输。
    79端口:用于Finger服务,提供远程主机的用户信息。
    80:HTTP(Hypertext Transfer Protocol)网页浏览
    99端口:用于Metagram Relay服务,这是一个不太常见的服务。
    109端口:用于POP2(Post Office Protocol v2),用于接收邮件。
    110:POP3(Post Office Protocol 3)邮局协议
    135:RPC(Remote Procedure Call)远程过程调用端口。RPC是一种用于在不同计算机之间进行通信和调用远程程序的协议。在Windows操作系统中,135端口用于提供远程过程调用服务,允许远程计算机执行本地计算机上的程序。
    143:IMAP(Internet Message Access Protocol)互联网消息访问协议
    443:HTTPS(Hypertext Transfer Protocol Secure)安全网页浏览
    3389:远程桌面协议(Windows远程桌面服务)
    3306:MySQL数据库服务
    5432:PostgreSQL数据库服务
    8080:HTTP代理服务器常用端口
    8443:HTTPS代理服务器常用端口
    """

    help_label = tk.Label(help_window, text=help_text, wraplength=600, justify="left", font=("Arial", 12), bg="#F0F0F0")
    help_label.pack(pady=10)

# 创建GUI窗口
window = tk.Tk()
window.title("查找占用端口进程工具---微信公众号:蓝胖子之家")
window.geometry("600x530")
window.configure(bg="#F0F0F0")

# 创建标题标签
title_label = tk.Label(window, text="查找占用端口进程工具", font=("Arial", 20), bg="#F0F0F0")
title_label.pack(pady=10)

# 创建标签和输入框
label = tk.Label(window, text="请输入查询的端口号:", font=("Arial", 14), bg="#F0F0F0")
label.pack(pady=10)

entry = tk.Entry(window, width=30, font=("Arial", 14))
entry.pack(pady=10)

# 创建按钮
button = tk.Button(window, text="查找", command=find_process_by_port, font=("Arial", 14), bg="#4CAF50", fg="white")
button.pack(pady=10)

# 创建帮助按钮
help_button = tk.Button(window, text="常用端口", command=show_help, font=("Arial", 14), bg="#2196F3", fg="white")
help_button.pack(pady=10)

# 创建结果显示标签
result_label = tk.Label(window, wraplength=500, justify="left", font=("Arial", 14), bg="#F0F0F0")
result_label.pack()

# 运行GUI窗口
window.mainloop()
  1. 导入所需的库:psutil用于获取系统进程信息,tkinter用于创建GUI窗口,messagebox用于显示错误信息。
  2. 定义一个函数find_process_by_port(),用于查找占用指定端口的进程信息。
  3. 在函数中,首先获取用户输入的端口号,并进行合法性检查,如果输入不是数字,则弹出错误提示框。
  4. 然后,通过psutil库的process_iter()函数获取系统中所有的进程信息,并将其存储在一个列表中。
  5. 接下来,遍历进程列表,对于每个进程,再遍历其连接信息。如果找到占用指定端口且状态为"LISTEN"的连接,就将该进程的相关信息存储在一个字符串变量result中。
  6. 最后,将result显示在GUI窗口中的一个标签(result_label)中。
  7. 如果没有找到占用指定端口的进程,就在result_label中显示"未找到占用指定端口的进程"。
  8. 定义一个函数show_help(),用于显示帮助信息。该函数创建一个新的顶级窗口(help_window),并在其中显示帮助文本。
  9. 创建GUI窗口(window),设置窗口标题、大小和背景颜色。
  10. 创建标题标签(title_label),显示工具的标题。
  11. 创建标签(label)和输入框(entry),用于输入要查询的端口号。
  12. 创建按钮(button),点击后调用find_process_by_port()函数来查找占用端口的进程。
  13. 创建帮助按钮(help_button),点击后调用show_help()函数来显示帮助信息。
  14. 创建结果显示标签(result_label),用于显示查找结果。

运行效果:

Python写端口查询进程工具

Python写端口查询进程工具

 工具

链接:https://pan.baidu.com/s/19LF3mn9OHUc87OPA5biiGQ 提取码:fxga

原文始发于微信公众号(蓝胖子之家):Python写端口查询进程工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月4日09:49:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python写端口查询进程工具https://cn-sec.com/archives/2466607.html

发表评论

匿名网友 填写信息