有趣的python脚本【监控公司出口ip变化并发送至钉钉群】

简介: 因为公司出口ip是动态的(拨号方式),重新拨号后就会变化。因此及时发现ip变化显得尤为重要(比如及时ecs安全组中的ip),另外可把py脚本打包成exe并加到办公电脑的计划任务里。

一:脚本详情

# 脚本作用:把本地出口ip发生变化时,发钉钉告警。另外此脚本可打包成exe程序在windown系统下执行,且win系统不需要安装python环境
# 打包exe命令: 先安装包:pip3 install pyinstaller  ,再打包:pyinstaller  -F -w  ./脚本名称.py  ,进入dist目录执行exe,拷贝至其他服务器也可执行,无论是否安装python。

二:脚本详情

# -*- coding: utf-8 -*-
import re
import os
from urllib import request

'''

# 获取当前公网ip
def GetCompanyPublicIp() :
    req = request.Request('https://myip.ipip.net/')
    req.add_header('User-Agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1')
    f = request.urlopen(req)
    ip_str = f.read().decode('utf-8')
    ip = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", ip_str)
    return ip[0]

# 从本地缓存文件中获取历史公网ip
def GetCompanyOldIp():
    try:
        f = open('ip.txt', 'r')
        oldIP = f.read().strip()
        return oldIP
    except IOError:
        print("Error: 没有找到文件或读取文件失败")
    else:
        f.close()


# 写入新的ip到本地
def IputCompanyNewIp(ip):
    try:
        f = open('ip.txt', 'w')
        f.write(ip)
    except IOError:
        print("Error: 没有找到文件或读取文件失败")
    else:
        print("写入NewIp成功")
        f.close()


#发送钉钉
def SendDing(msg):
    import requests
    import json
    dingding_url = 'https://oapi.dingtalk.com/robot/send?access_token=xxx'  
    data = {"msgtype": "text","text": {"content": "请注意:"+str(msg)}}
    headers = {'Content-Type':'application/json;charset=UTF-8'}
    send_data = json.dumps(data).encode('utf-8')
    ret = requests.post(url=dingding_url,data=send_data,headers=headers)
    print(ret.text)

if __name__ == '__main__':
    ip_file = os.path.exists('ip.txt')
    if ip_file == True:
        print('本地ip.txt文件存在,继续...')
    else:
        print('本地ip.txt文件不存在,模拟写入一个...')
        IputCompanyNewIp('1.1.1.1')

    NewIp = GetCompanyPublicIp()
    OldIp = GetCompanyOldIp()
    if NewIp == OldIp:
        print('公司出口ip没有发生变化,脚本退出。')
    else:
        print('公司出口ip发生变化:', NewIp)
        IputCompanyNewIp(NewIp)
        # SendDing("本地ip发生变化")
        SendDing("本地ip发生变化;旧的:%s 新的:%s"  %(OldIp,NewIp))
        # AddToNg(NewIp)
        #连接至ng服务器
        #sc = SSHConnection(host="139.15.119.193", port=22, user="root", pwd="R123")
        #sc.cmd("/bin/bash /tmp/p.sh  192.168.1.1")
        #sc.cmd("/bin/bash /opt/yunwei/add_denyip_to_ng.sh   %s" %NewIp)


        print("Client IP: %s  was successfully send to dingdingGroup." % NewIp)

三:效果

image.png

image.png

image.png

完!

目录
相关文章
|
9月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
247 5
|
12月前
|
存储 运维 监控
基于跳表数据结构的局域网上网记录监控时序查询优化算法研究与 Python 实现
本文探讨跳表(Skip List)在局域网上网记录监控中的应用,分析其在快速范围查询、去重与异常检测中的优势,并提供 Python 实现示例,为高效处理海量时序数据提供参考。
241 0
|
监控 算法 安全
深度洞察内网监控电脑:基于Python的流量分析算法
在当今数字化环境中,内网监控电脑作为“守城卫士”,通过流量分析算法确保内网安全、稳定运行。基于Python的流量分析算法,利用`scapy`等工具捕获和解析数据包,提取关键信息,区分正常与异常流量。结合机器学习和可视化技术,进一步提升内网监控的精准性和效率,助力企业防范潜在威胁,保障业务顺畅。本文深入探讨了Python在内网监控中的应用,展示了其实战代码及未来发展方向。
|
数据采集 机器学习/深度学习 Web App开发
Python爬虫如何应对贝壳网的IP封禁与人机验证?
Python爬虫如何应对贝壳网的IP封禁与人机验证?
|
12月前
|
数据采集 存储 监控
Python爬虫自动化:定时监控快手热门话题
Python爬虫自动化:定时监控快手热门话题
|
数据采集 机器学习/深度学习 边缘计算
Python爬虫动态IP代理报错全解析:从问题定位到实战优化
本文详解爬虫代理设置常见报错场景及解决方案,涵盖IP失效、403封禁、性能瓶颈等问题,提供动态IP代理的12种核心处理方案及完整代码实现,助力提升爬虫系统稳定性。
604 0
|
监控 算法 安全
基于 Python 广度优先搜索算法的监控局域网电脑研究
随着局域网规模扩大,企业对高效监控计算机的需求增加。广度优先搜索(BFS)算法凭借其层次化遍历特性,在Python中可用于实现局域网内的计算机设备信息收集、网络连接状态监测及安全漏洞扫描,确保网络安全与稳定运行。通过合理选择数据结构与算法,BFS显著提升了监控效能,助力企业实现智能化的网络管理。
285 7
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
319 20
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
295 1

推荐镜像

更多