当前位置: 首页 > news >正文

服务器获取外网IP,并发送到钉钉

服务器获取外网IP,并发送到钉钉

import time
import hmac
import hashlib
import base64
import urllib.parse
import requests# === 请填入你的钉钉机器人配置 ===
access_token = 'XXXX'
secret = 'XXXX'# 获取公网 IP
def get_public_ip():try:response = requests.get("https://api.ipify.org", timeout=5)return response.text.strip()except Exception as e:return f"获取公网 IP 失败: {e}"# 生成签名
def generate_signature(secret):timestamp = str(round(time.time() * 1000))secret_enc = secret.encode('utf-8')string_to_sign = f'{timestamp}\n{secret}'string_to_sign_enc = string_to_sign.encode('utf-8')hmac_code = hmac.new(secret_enc, string_to_sign_enc, hashlib.sha256).digest()sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))return timestamp, sign# 发送消息到钉钉
def send_dingding_message(ip_address):timestamp, sign = generate_signature(secret)url = f'https://oapi.dingtalk.com/robot/send?access_token={access_token}&timestamp={timestamp}&sign={sign}'headers = {'Content-Type': 'application/json'}message = {"msgtype": "markdown","markdown": {"title": "服务器公网 IP 通知","text": f"###  新加坡服务器公网 IP\n\n当前公网 IP 地址为:`{ip_address}`\n\n发送时间:{time.strftime('%Y-%m-%d %H:%M:%S')}"}}response = requests.post(url, headers=headers, json=message)if response.status_code == 200 and response.json().get("errcode") == 0:print("钉钉消息发送成功 ✅")else:print(f"发送失败 ❌: {response.text}")if __name__ == '__main__':ip = get_public_ip()send_dingding_message(ip)
http://www.dtcms.com/a/255035.html

相关文章:

  • React封装框架dvajs(状态管理+异步操作+数据订阅等)
  • 【redis】客户端
  • LVS负载均衡群集:Nginx+Tomcat负载均衡群集
  • 4-STM32F103的串口中断与空闲中断接收数据
  • 装配基本操作与标准配合关系-装配体设计技能(1)
  • 【案例拆解】米客方德 SD NAND 在车联网中(有方模块)的应用:破解传统 TF 卡振动脱落与寿命短板
  • 地标“金”字招牌再升级:赤水金钗石斛携手世酒中菜开启新纪元
  • AI Agent开发与安全
  • 【网络安全】ios逆向一般整理
  • Python 中设置布尔值参数为 True 来启用验证
  • 全球首款5G-A人形机器人亮相,通信与AI融合进入新阶段
  • ACR窃密木马改头换面,更名重构后规避能力升级
  • RPGMZ游戏引擎 如何手动控制文字显示速度
  • 8年java开发从零学习人工智能(深度学习)--pp飞桨(百度自研开源框架)
  • 领码 SPARK 融合平台赋能工程建设行业物资管理革新——数智赋能,重塑中国模式新范式
  • leetcode-3443. K次修改后的最大曼哈顿距离
  • Vue 滑动验证组件
  • OPENGLPG第九版学习 - 纹理与帧缓存 part1
  • conda导出环境文件requirements.txt
  • Python OpenCV 模板匹配的一些应用场景和方法思考,浅析KAZE特征匹配对比
  • Odoo 18进阶开发:打造专业级list,kanban视图Dashboard
  • Cmake入门及CMakeLists.txt 语法介绍
  • 数据库从零开始:MySQL 中的 DDL 库操作详解【Linux版】
  • 服务网格安全(Istio)从入门到实践
  • 电子电气架构 --- 软件供应商如何进入OEM体系
  • 频繁操作Json嵌套数据PostgreSQL配合JSON操作工具类+sql
  • 最小化联邦平均(FedAvg)的算法开销
  • Apipost 签约锐捷网络:AI赋能,共推 ICT 领域 API 生态智能化升级
  • 算法第38天|322.零钱兑换\139. 单词拆分
  • FTTR+软路由网络拓扑方案