conn_collector.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:ops_agent 作者: sjqzhang 项目源码 文件源码
def get_connections(self):
        listening = []
        connections = psutil.net_connections()
        for conn in connections:
            if not conn.pid:
                continue
            if conn.status == psutil.CONN_LISTEN:
                ip, port = conn.laddr
                # instance = '%s:%s' % (ip, port)
                if port not in listening:
                    listening.append(port)

        res = []
        clients = {}
        for conn in connections:
            if not conn.pid:
                continue
            if not conn.status == psutil.CONN_ESTABLISHED:
                continue

            ip, port = conn.laddr
            # instance = '%s:%s' % (ip, port)
            if port in listening:
                continue

            try:
                proc = psutil.Process(conn.pid)
            except psutil.NoSuchProcess:
                continue

            current = time.time()
            create_time = proc.create_time()
            if current - create_time < 60 * 5:
                continue

            rip, rport = conn.raddr
            record_id = '%s-%s:%s' % (conn.pid, rip, rport)
            client = clients.setdefault(record_id, {})
            if not client:
                client['client_pid'] = conn.pid
                client['client_process_create_time'] = int(create_time)
                client['client_pname'] = proc.name()
                client['client_cwd'] = proc.cwd()
                client['client_ip'] = ip
                # client['client_ports'] = '%s' % port
                client['client_port_num'] = 1
                client['server_ip'] = rip
                client['server_port'] = rport
                client['server_pid'] = ''
                client['server_pname'] = ''
            else:
                # client['client_ports'] += ', %s' % port
                client['client_port_num'] += 1

        res = clients.values()
        res.sort(key=lambda x: (x['client_pid'], x['server_port']))
        return res
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号