【问题标题】:Find ports a program uses with python查找程序与 python 一起使用的端口
【发布时间】:2016-03-01 06:09:30
【问题描述】:

我想找到“plugin-container.exe”使用的端口,这样我就可以监控与该程序交互的 IP 地址,问题是有两个“plugin-container.exe”。 我使用的是 Firefox 开发者版。

我已经关闭了监控部分,但我需要以某种方式自动获取端口。据我所知,获取它们意味着知道进程正在使用什么 PID,两个进程 = 2 个 PID。 ;_;

我可以同时添加它们,但是有大量流量通过我的浏览器,当我手动输入所有 4 个端口时,它会杀死我的程序。

现在我用这个来获取列表,re.findall 来过滤列表中的“plugin-container.exe”,然后我使用 psutil 来查找哪些端口。

我觉得有一种更简单的方法可以完成所有这些操作。

导入操作系统、系统、win32api、re、psutil

tasklistrl = os.popen("tasklist").readlines()

tasklistr = os.popen("tasklist").read()

【问题讨论】:

    标签: python windows networking port pid


    【解决方案1】:

    我想通了。 还有另一个端口,但它们是连续的。 嗯。

       process_name = "plugin-container.exe" 
        for proc in psutil.process_iter(): 
            process = psutil.Process(proc.pid)
            pname = process.name()
            #print pname
            if pname == process_name: 
                print(proc.pid)
                d = psutil.Process(int(proc.pid))
                print(d.name())
                print(d.memory_info())
                dec = input("Use this one?")
                if dec in ["yes","y","yep"]:
                    con = d.connections(kind='udp4')
                    break
        for connection in con:
                    yourmom = connection.laddr[1]
        port1 = yourmom
        port2 = port1 + 1
    

    【讨论】:

      【解决方案2】:

      如果您想要一种使用 psutil 按可执行名称查找进程的好方法,那么您应该使用 process_itercmdline

      my_processes = [x for x in psutil.process_iter() if os.path.split(x.cmdline()[0])[1] == 'python']
      

      (用你想要的可执行文件名替换'python'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-26
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        相关资源
        最近更新 更多