Skip to main content

skyeye-sensor-use

使用天眼 SkyEye Sensor 传感器侧精简 CLI 查询告警列表和告警统计。适用于用户提到"SkyEye Sensor""天眼流量传感器告警"场景。

来源信息

仓库
AgentFlocks/flocks
最近来源活动
2026年9月20日 16:54
检测到的 SKILL.md 语言
中文
星标
481
分支
90

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
7 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
skyeye-sensor-use
group
平台集成
description
使用天眼 SkyEye Sensor 传感器侧精简 CLI 查询告警列表和告警统计。适用于用户提到"SkyEye Sensor""天眼流量传感器告警"场景。
# SkyEye Sensor 数据查询 > 如果是分析平台日志检索,不要用这个 skill,改用 `skyeye-use`。 ## 适用范围 这个 skill 主要覆盖传感器侧接口: - 告警统计 - 告警列表 不适合: - Lucene 日志检索 - 专家模式管道检索 - 分析平台资产与系统模块 - 传感器枚举接口、License、权限和菜单配置 ## 零、登录认证 > 对后台任务 / 定时任务,或系统不支持可视化,使用 `browser-use` 的 `cdp-headless` 模式。 State 文件路径:`~/.flocks/browser/skyeye-sensor/auth-state.json`(固定,全局唯一)。 自动登录配置路径:`~/.flocks/browser/skyeye-sensor/auth-config.json`(只保存 base_url、state 路径和 secret 引用;密码写入 Flocks secret)。 ## 跨平台执行约定(必须遵守) `scripts/skyeye_sensor_auth.py` 和 `scripts/skyeye_sensor_cli.py` 都是 **skill-relative** 路径。执行任何脚本前,必须先把当前工作目录切到 `skill_load` 输出中的 **Base directory**,不要假设当前 shell 已经在 skill 目录,也不要拼未加引号的绝对路径。 推荐方式: - 如果工具支持 `workdir` 参数,直接把 `workdir` 设为 `skill_load` 输出的 Base directory,再运行 `uv run python scripts/...`。 - 如果只能写 shell 命令,先进入 Base directory,再运行脚本。 - 跨平台示例优先使用 `--base-url`、`--auth-state` 等 CLI 参数,少用 shell 环境变量前缀。 - Windows PowerShell 设置环境变量必须用 `$env:NAME = 'value'`;不要用 POSIX 的 `NAME=value command`。 - macOS/Linux shell 可以用 `NAME=value command` 或 `export NAME=value`。 - 路径含空格时必须整体加引号。Windows 下优先用 `Set-Location -LiteralPath '<skill-dir>'`,macOS/Linux 下优先用 `cd "$SKILL_DIR"`。 - 不要在 `glob` / 文件工具的 `path` 参数里写 `$env:USERPROFILE`、`$HOME` 这类 shell 变量;这些参数通常不会做 shell 展开。需要用户目录时,用 `~/.flocks/...` 或先在 shell 里展开后再传入。 Windows PowerShell 模板: ```powershell Set-Location -LiteralPath '<skill-load 输出的 Base directory>' uv run python scripts/skyeye_sensor_auth.py --base-url 'https://<skyeye-sensor-domain>' validate uv run python scripts/skyeye_sensor_cli.py --base-url 'https://<skyeye-sensor-domain>' alarm list --days 7 ``` macOS/Linux 模板: ```bash cd "<skill-load 输出的 Base directory>" uv run python scripts/skyeye_sensor_auth.py --base-url 'https://<skyeye-sensor-domain>' validate uv run python scripts/skyeye_sensor_cli.py --base-url 'https://<skyeye-sensor-domain>' alarm list --days 7 ``` ### 首次登录 / Session 过期重新登录 打开 SkyEye Sensor 页面或执行 CLI 前,必须按下面顺序处理登录态,不要一开始就要求用户提供账密: 1. 先检查 `auth-state.json` 是否可用。 2. 如果 state 可用,直接复用登录态继续打开页面或执行 CLI 获取数据。 3. 如果 state 不存在或失效,但本地已有可用于自动登录的配置,先在 skill Base directory 中执行自动刷新:`uv run python scripts/skyeye_sensor_auth.py ensure`。 4. 如果没有可用 state,也没有保存账密配置,再引导用户选择: - 提供 SkyEye Sensor 地址、用户名、密码,自动登录并保存账密配置,后续 state 失效时可直接自动刷新; - 不提供账密,走浏览器手动登录流程。 5. 只有自动登录失败、验证码 OCR / MFA / 登录页 DOM 变化 / 登录成功检测失败,或用户拒绝提供账密时,才回退手动登录。 只读查看本地是否具备自动刷新条件(需在 skill Base directory 中执行): ```bash uv run python scripts/skyeye_sensor_auth.py status ``` 检查 state 是否可用(需在 skill Base directory 中执行): ```bash uv run python scripts/skyeye_sensor_auth.py --base-url https://<skyeye-sensor-domain> validate ``` 如果 `validate` 返回 `valid: true`,继续后续页面操作或 CLI 查询;如果返回 `auth_state_not_found`、`auth_state_expired_or_login_page` 或 `auth_state_load_failed`,再看 `status` 中 `can_auto_refresh` 是否为 `true`。 有已保存账密配置时自动刷新(需在 skill Base directory 中执行): ```bash uv run python scripts/skyeye_sensor_auth.py ensure ``` 自动刷新成功后继续执行原页面或 CLI 操作;失败才进入下方用户选择流程。 ```bash flocks browser --doctor ``` 如果 `flocks browser --doctor` 提示浏览器已运行,但 daemon 或 active browser connection 不可用,先执行 `flocks browser --setup` 触发 attach,不要先要求用户重复勾选 Allow remote debugging。 1. 执行 `flocks browser --setup` 触发交互式 attach,不要用短超时包装该命令。 2. 再运行 `flocks browser --doctor` 做只读确认。 3. 如果 `--setup` 或 `--doctor` 明确提示 remote debugging 未启用,再提示用户打开 inspect 页面(例如 `chrome://inspect/#remote-debugging` 或 `edge://inspect/#remote-debugging`)并勾选 Allow remote debugging。 4. 如果还失败,先执行 `flocks browser --reload` 清理旧 daemon,再重新执行 `flocks browser --setup`,避免因为残留 daemon 造成干扰。 5. 只有随后 `--doctor` 通过后,才继续后面的登录或页面操作。 当必须询问用户时,说明两种选择并尊重用户偏好: - 提供账密并保存:调用 `scripts/skyeye_sensor_auth.py`,通过 browser daemon / CDP 驱动真实登录页自动登录。脚本会优先从登录页验证码图片元素动态获取图片、OCR 识别、填入页面、保存 state,并把用户名/密码写入 Flocks secret,把基础配置保存到 `~/.flocks/browser/skyeye-sensor/auth-config.json`。后续 `auth-state.json` 失效时,可在 skill Base directory 中直接执行 `uv run python scripts/skyeye_sensor_auth.py ensure`。 - 不提供账密:沿用原有浏览器登录流程。打开登录页后由用户手动完成登录(含短信验证码 / MFA 等),登录成功后保存 state。 手动登录时,打开登录页并等待用户完成登录: ```bash flocks browser -c ' tid = new_tab("https://<skyeye-sensor-domain>/login", activate=True) wait_for_load() print(tid) import json print(json.dumps(page_info(), ensure_ascii=True)) ' ``` 自动执行上述命令,等待用户登录结束,收到通知后继续: ```bash # 登录成功后立即保存 state flocks browser state save ~/.flocks/browser/skyeye-sensor/auth-state.json ``` 提供账密并保存时,执行自动登录: ```bash uv run python scripts/skyeye_sensor_auth.py --base-url https://<skyeye-sensor-domain> ensure --username '<username>' --password '<password>' ``` 下次 `auth-state.json` 失效且本地保存过账密配置时,可直接执行: ```bash uv run python scripts/skyeye_sensor_auth.py ensure ``` 也可以在查询命令前直接带账密或使用已保存账密刷新登录态: ```bash uv run python scripts/skyeye_sensor_cli.py \ --base-url https://<skyeye-sensor-domain> \ --username '<username>' \ --password '<password>' \ alarm count uv run python scripts/skyeye_sensor_cli.py --auto-login alarm list ``` 如果验证码 OCR、MFA、登录页 DOM 变化或登录成功检测失败,回退到上面的手动登录流程。 ### CLI 认证失败时的恢复流程 当 CLI 出现以下任一情况,优先判定为认证问题(**不要立刻要求用户重新登录**): - 返回 HTTP `401` / `403` - 返回内容包含 `Unauthorized`、`login`、未登录、认证失败 - `auth-state.json` 存在,但 CLI 请求仍失败 **恢复步骤(最多尝试 1 次)**: ```bash # 1) 重新加载 state(强制刷新浏览器会话) flocks browser state load ~/.flocks/browser/skyeye-sensor/auth-state.json --url "https://<skyeye-sensor-domain>" # 2) 读取当前页面状态 flocks browser -c ' import json print(json.dumps(page_info(), ensure_ascii=True)) ' ``` ```bash # 3) 根据结果决策 URL=$(flocks browser -c ' import json info = page_info() print(info.get("url", "")) ' | tail -n 1) if [[ "$URL" == *"/login"* ]]; then echo "Session 仍无效,需重新登录" # → 走上方「首次登录 / 重新登录」流程 else flocks browser state save ~/.flocks/browser/skyeye-sensor/auth-state.json echo "Session 已恢复,可重试 CLI" # → 重试一次 CLI;若仍失败,再走重新登录,不要无限循环 fi ``` --- ## 执行约定 CLI 在 skill 内: `scripts/skyeye_sensor_cli.py` 执行命令时: 1. 必须先进入 `skill_load` 输出的 Base directory,或把命令工具的 `workdir` 设置为该目录。 2. 优先使用 `uv run python scripts/skyeye_sensor_cli.py ...` 3. 认证优先使用浏览器导出的 `auth-state.json` 可选认证环境变量: - `SKYEYE_SENSOR_BASE_URL=https://<skyeye-sensor-domain>` - `SKYEYE_SENSOR_AUTH_STATE=~/.flocks/browser/skyeye-sensor/auth-state.json` - 如有单独 Cookie 文件,可用 `SKYEYE_SENSOR_COOKIE_FILE` - 没有 state/cookie 时,再考虑 `SKYEYE_SENSOR_CSRF_TOKEN` ## 常用命令 如果已经通过环境变量或 CLI 参数设置好认证信息: ```bash # 默认输出 JSON uv run python scripts/skyeye_sensor_cli.py alarm count --days 7 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --page 1 --page-size 10 uv run python scripts/skyeye_sensor_cli.py alarm list --hours 6 --sip 1.1.1.1 # 配合 jq 提取字段 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --hazard-level "3,2" | jq '.items[].threat_name' # 加 --table 输出格式化表格(人工阅读用) uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --table ``` 带认证的完整单行格式(无需提前 export,适合 Windows/macOS/Linux 直接执行): ```bash uv run python scripts/skyeye_sensor_cli.py --base-url https://<skyeye-sensor-domain> --auth-state ~/.flocks/browser/skyeye-sensor/auth-state.json alarm list --days 7 --hazard-level "3,2" ``` ## 查询策略 - 用户问"最近几天告警数量变化"时,优先 `alarm count` - 用户问"列出具体告警"时,使用 `alarm list` - 需要按更多页面字段精确过滤时,先查 `references/API_REFERENCE.md` 中"API Client 已支持"部分 ## 常见过滤条件 时间:`--days` / `--hours` IP 相关:`--sip` `--dip` `--alarm-sip` `--attack-sip` 告警分类:`--hazard-level` `--threat-type` `--attack-type` `--threat-name` `--attack-stage` `--attack-dimension` 处置状态:`--status` `--attack-result` `--host-state` `--is-read` `--user-label` 网络特征:`--proto` `--sport` `--dport` `--host` `--uri` `--xff` `--status-http` 威胁情报:`--ioc` `--attck-org` `--attck` `--alert-rule` `--is-web-attack` 网络标识:`--src-mac` `--dst-mac` `--vlan-id` `--vxlan-id` `--gre-key` 标签与来源:`--marks` `--ip-labels` `--alarm-source` 时间与文件:`--start-update-time` `--end-update-time` `--pcap-filename` 完整参数说明见 [references/API_REFERENCE.md](references/API_REFERENCE.md)。 ## 常用查询示例 ### 高危及以上告警 ```bash # 最近 7 天,严重 + 高危告警列表 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --hazard-level "3,2" # 最近 24 小时,高危以上告警数量趋势 uv run python scripts/skyeye_sensor_cli.py alarm count --hours 24 --hazard-level "3,2" ``` ### 攻击成功的告警 ```bash # 最近 7 天攻击成功告警 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --attack-result "攻击成功" # 高危以上 + 攻击成功 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --hazard-level "3,2" --attack-result "攻击成功" # 统计最近 7 天攻击成功告警数量 uv run python scripts/skyeye_sensor_cli.py alarm count --days 7 --attack-result "攻击成功" ``` ### 未处置告警 ```bash # 最近 7 天未处置告警(status=0) uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --status "0" # 高危以上 + 未处置 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --hazard-level "3,2" --status "0" ``` ### 指定 IP 的告警 ```bash # 某 IP 作为流量源 IP 的告警 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --sip "1.1.1.1" # 某 IP 作为流量目的 IP 的告警 uv run python scripts/skyeye_sensor_cli.py alarm list --days 7 --dip "192.168.1.100" ``` ### 按威胁类型 + 主机状态过滤 ```bash # 威胁类型 2、3,主机状态包含失陷(-1) uv run python scripts/skyeye_sensor_cli.py alarm list \ --days 7 \ --threat-type "2,3" \ --host-state "0,1,2,-1" ``` ### 告警数量变化趋势 ```bash # 最近 30 天每天告警数 uv run python scripts/skyeye_sensor_cli.py alarm count --days 30 # 最近 7 天,仅高危以上 uv run python scripts/skyeye_sensor_cli.py alarm count --days 7 --hazard-level "3,2" ``` > 当查询字段或条件不在常用查询字段/示例中,请阅读完整字段列表、CLI 参数说明、查询示例:[references/API_REFERENCE.md](references/API_REFERENCE.md) ## 边界说明 - 如果用户要求"原始日志检索 / Lucene / 字段状态 / expert_model",这是分析平台能力,切换到 `skyeye-data-fetch` - 这个 skill 是天眼流量传感器平台适用, CLI只保留 `alarm list` 和 `alarm count` ## 重要提醒 - **Session 管理**:详见[零、登录认证](#零登录认证)。任务开始前先用 `skyeye_sensor_auth.py validate` 确认 `auth-state.json` 可用;CLI 认证失败时先走恢复流程,不要立刻要求用户重新登录。 - **禁止连续失败循环**:同一命令最多重试 2 次;认证恢复流程只走一次,仍失败则提示用户手动重新登录。 - **以下错误属于需要用户干预的基础设施问题,立即停止所有重试,直接告知用户处理**: - `ERR_CERT_AUTHORITY_INVALID`:站点证书不被本机信任,使用--ignore-https-errors 或 请求用户处理。 ## 参考文档 - 完整字段列表、CLI 参数说明、查询示例:[references/API_REFERENCE.md](references/API_REFERENCE.md)
在 GitHub 查看