360 Secure SkillHub
360 安全技能中心

Public IP Watch

通过外部 IP 查询服务获取本机公网 IP,读取本地缓存进行对比,报告首次检测、未变化或已变更状态,并写回带时间戳的缓存文件;可用于手动检查或定时任务执行。

xp1001
xp1001
热度 8.88
最近更新 2026-06-30 15:21:03
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:自动化脚本 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add public-ip-watch
Metadata
name
public-ip-watch
description
获取本机公网 IP,或检测 IP 是否发生变化(对比缓存),如有变更则通知用户。适用于定时任务或手动执行。
agent_created
true
author
XP

public-ip-watch

检测本机公网 IP 并与缓存对比,报告变更状态,更新缓存。

触发场景

  • 用户说"看看我的公网 IP 是多少"
  • 用户说"检查一下我的公网 IP 变了没有"
  • 自动化定时任务中定期执行(如每天一次)
  • 用户提到"网络断了又好了"等需要确认 IP 是否变更的场景

执行步骤

1. 获取当前公网 IP

按优先级尝试以下服务:

CURRENT_IP=$(curl -s --max-time 10 https://ip.sb)

如果上述请求失败(返回空或非 IP 格式),备选:

CURRENT_IP=$(curl -s --max-time 10 https://ipinfo.io/ip | xargs)

从结果中提取 IP 地址(去除多余的空白字符)。

2. 读取缓存文件

缓存文件路径:~/.public_ip_cache.json

如果文件不存在,视为首次检测,直接跳到步骤 4。

CACHED_JSON=$(cat ~/.public_ip_cache.json 2>/dev/null || echo '{}')

JSON 格式示例:

{
  "ip": "153.99.16.209",
  "timestamp": "2026-06-30T09:46:00+08:00"
}

3. 对比 IP

  • IP 未变化:向用户报告 IP 未变化,当前 IP 为 xxx
  • IP 已变更:向用户报告 ⚠️ IP 已变更!从 xxx 变更为 xxx,确保用户能注意到

若无缓存(首次检测),报告:首次检测,当前公网 IP 为 xxx

4. 更新缓存

写入当前 IP 和当前 ISO 8601 时间戳到 ~/.public_ip_cache.json。

5. 返回结果

向用户输出检测结论。如果是变更事件,在结论末尾加上建议:"如需重新配置依赖该 IP 的服务(如域名解析、防火墙白名单),请及时处理。"