有趣的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

完!

目录
相关文章
|
2月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
200 61
|
23天前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
48 14
|
2月前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
126 7
21个Python脚本自动执行日常任务(2)
|
2月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
172 5
|
2月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
102 7
|
存储 弹性计算 安全
成功案例-钉钉 | 学习笔记
快速学习 成功案例-钉钉
434 0
|
存储 弹性计算 安全
案例分享——钉钉|学习笔记
快速学习 案例分享——钉钉
400 0
|
存储 弹性计算 安全
案例分享——钉钉
rds数据库 阿里云为钉钉提供了安全性和整体服务的稳定性
案例分享——钉钉
|
存储 弹性计算 监控

热门文章

最新文章