返回顶部
首页 > 资讯 > 后端开发 > Python >每日一题_Python.纯Python实
  • 226
分享到

每日一题_Python.纯Python实

_PythonPython 2023-01-31 04:01:14 226人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

具体需求:1. 由于自主开发的XmZoomEye-Agent目前被动监控为主,为了实现Zabbix Low-Level Discovery服务自主发现,需要根据进程名自动获取占用端口列表,并根据端口分析上报数据实现思路:1. 利用psuti

具体需求:
1. 由于自主开发的XmZoomEye-Agent目前被动监控为主,为了实现Zabbix Low-Level Discovery服务自主发现,需要根据进程名自动获取占用端口列表,并根据端口分析上报数据


实现思路:

1. 利用psutil模块通过进程名获取进程id列表
2. 遍历/proc/net/tcp文件获取rem_address为00000000:0000的列,将第九列的Socket_id和它以集合形式的字典存储去重
3. 利用获取到的pid列表和socket_id集合字典生成端口集合
4. 尝试连接端口获取动态数据上报

wKiom1flKmWSePxdAAAlVjy4230417.png


具体代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: Http://xmdevops.blog.51cto.com/
# Purpose:
#
"""
# 说明: 导入公共模块
import os
import re
import psutil
# 说明: 导入其它模块


# 说明: 获取进程
def pidof_processname(srvname):
    pids = []
    for pid in psutil.process_iter():
        if pid.name() == srvname:
            pids.append(str(pid.pid))
    return pids


# 说明: 套接端口
def socks_with_ports():
    sockets = {}
    with open('/proc/net/tcp', 'r+b') as fd:
        for curline in fd:
            sepline = curline.split()
            if sepline[2] != '00000000:0000':
                continue
            key = sepline[9]
            addr, port = sepline[1].split(':')
            if key not in sockets:
                sockets[key] = set()
            sockets[key].add(int(port, 16))
    return sockets


# 说明: 获取端口
def analysis_sockports(pids, socks):
    sock_ports = set()
    for pid in pids:
        fd_path = os.path.join(os.path.join('/proc', pid), 'fd')
        for rlink in os.listdir(fd_path):
            rpath = os.path.join(fd_path, rlink)
            if not os.path.exists(rpath):
                continue
            vlink = os.readlink(rpath)
            if not vlink.startswith('socket:'):
                continue
            match = re.search(r'(?<=socket:\[)([0-9]+)(?=\])', vlink)
            if not match:
                continue
            addr = match.group(1)
            if addr in socks:
                sock_ports.update(socks[addr])
    return sock_ports


def service_Redis_running_status(add_data=None):
    srv_name = 'redis-server'
    pids = pidof_processname(srv_name)
    socks = socks_with_ports()
    ports = analysis_sockports(pids, socks)
    return 'service: %s -> port: ' % srv_name, ports


if __name__ == '__main__':
    import pprint
    pprint.pprint(service_redis_running_status())


有图有相:

wKioL1flNUCCprWkAABFkw9S7f0428.png

--结束END--

本文标题: 每日一题_Python.纯Python实

本文链接: https://lsjlt.com/news/187854.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 每日一题_Python.纯Python实
    具体需求:1. 由于自主开发的XmZoomEye-Agent目前被动监控为主,为了实现Zabbix Low-Level Discovery服务自主发现,需要根据进程名自动获取占用端口列表,并根据端口分析上报数据实现思路:1. 利用psuti...
    99+
    2023-01-31
    _Python Python
  • Java每日一题(3)
    题目: 使用java.lang.Math类,生成100个0到99之间的随机整数,找出它们之中的最大者和最小者,并统计大于50的整数个数   已有答案: http://jythoner.javaeye.com/blog/322336page...
    99+
    2023-01-31
    Java
  • 每日一道SQL题 - Lu
    说明: 作者:原文出处 答案基于mysql 8.0,自己写的,不一定正确。 目录2021060420210603 20210604 题目: 两张表: id 是自动递增的主键,CandidateId 是 T0604A 表中的 id. ...
    99+
    2017-10-23
    每日一道SQL题 - Lu
  • python每日一练(4)
      🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0...
    99+
    2023-10-20
    python 开发语言 学习 算法 抽象代数 github windows
  • python每日一练(7)
      🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0...
    99+
    2023-10-20
    python 算法 学习 开发语言 服务器 青少年编程
  • python每日一练(6)
       🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v...
    99+
    2023-10-18
    前端 学习 算法 python 笔记 开发语言
  • python每日一练(5)
       🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v...
    99+
    2023-10-18
    前端 开发语言 python 学习 算法 服务器 数据结构
  • python每日一练(9)
       🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v...
    99+
    2023-10-26
    python 开发语言 笔记 经验分享 算法
  • 2023-08-26力扣每日一题
    链接: 228. 汇总区间 题意: 升序数组找连续区间 解: 简单遍历题 实际代码: #includeusing namespace std;vector summaryRanges(vector& nums){ if(!nums.s...
    99+
    2023-08-30
    leetcode
  • 【每日一题】57. 插入区间
    【每日一题】57. 插入区间 57. 插入区间题目描述解题思路 57. 插入区间 题目描述 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要...
    99+
    2023-08-30
    leetcode 算法 职场和发展
  • 每日一题 LeetCode 有效的数字
    有效的数字(简单题) class Solution:def isValid(self, s):""":type s: str:rtype: bool""" a=list(s) b=[] ...
    99+
    2023-01-31
    数字 LeetCode
  • Leetcode 9.11每日一题 630. 课程表 III
    这里有 n 门不同的在线课程,按从 1 到 n 编号。给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi] 表示第 i 门课将会 持续 上 durationi 天课,并且必须在不晚于 l...
    99+
    2023-09-12
    leetcode 算法 数据结构 c++
  • Android实例 每日一句(英语)
    前言:添加了学习模块,所以做了一个每日一句的功能,主要是在天行数据申请了一个每日一句的api,之后用okgo,调取,并解析成对象。获取文字、图片、音频等。在线显示、播放。同时做...
    99+
    2022-06-06
    每日一句 英语 Android
  • 【每日一记3.16】python学习记录
    6.Python的列表    Python列表是python内置的数据对象之一    列表用【】包含,内有数据对象,每个数据对象以‘,’分隔,每个数据对象称为元素    python是一个有序的序列,支持嵌套    【】空列表,同时用lis...
    99+
    2023-01-31
    python
  • 老男孩教育每日一题-2017年3月21日
    查找占用内存的前3名进程(命令大风暴,看谁的命令最精简)参考答案:方法一top 按内存列排序,使用>可以移动到以内存排序 x高亮 z 加颜色方法二top -a  以内存排序方法三htop 可以使用鼠标点击按内存列排序 注:需要yum安...
    99+
    2023-01-31
    男孩
  • 【力扣每日一题】2023.9.18 打家劫舍Ⅲ
    目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 今天是打家劫舍3,明天估计就是打家劫舍4了。 今天的打家劫舍不太一样,改成二叉树了,不过规则没有变,我们还是不能偷相邻的节点。 此时房屋的排序不是像之前那样是线性的了,也...
    99+
    2023-10-12
    leetcode 算法 c++ 数据结构
  • Python每日一练——第1天:水仙花数
    前言📢📢 Python每日一练来啦,本文已收录于:《Python每日一练》专栏 此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,每周持续更新中,欢...
    99+
    2023-09-26
    python list 算法
  • Java日常练习题,每天进步一点点(61)
    目录1、如果类的方法没有返回值,该方法的返回值类型应当是abstract。()2、代码String str=”123456a”;int i=Integer.parseInt(str);会报异常的是()3、以下哪个方法用于定义线程的执行体?4...
    99+
    2020-04-03
    Java日常 Java练习题
  • Java日常练习题,每天进步一点点(26)
    目录1、定义:String s1 = “uml”; String s2 = “uml”; String s3= new String(“uml”); String s4= new S...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(27)
    目录1、与未加访问控制符的缺省情况相比,public和protected修饰符扩大了属性和方法的被访问范围,private修饰符则缩小了这种范围。2、下列叙述错误的是( )3、能用来...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作