From a5b93ff211bdc4eb4d2f5c0536f9d367b5f93698 Mon Sep 17 00:00:00 2001 From: OpenClaw Assistant Date: Sat, 21 Feb 2026 14:10:03 +0000 Subject: [PATCH] Add daily SkillFence Telegram alert script --- scripts/skillfence-telegram-alert.sh | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 scripts/skillfence-telegram-alert.sh diff --git a/scripts/skillfence-telegram-alert.sh b/scripts/skillfence-telegram-alert.sh new file mode 100755 index 0000000..1a42ed0 --- /dev/null +++ b/scripts/skillfence-telegram-alert.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -euo pipefail + +BOT_TOKEN="8336789949:AAFBnK6EUIUK4Gkj6KcuDcwwQh4u_fg9dGc" +CHAT_ID="217610143" +MONITOR="/home/openclaw/.openclaw/workspace/skills/skillfence/monitor.js" + +if ! command -v node >/dev/null 2>&1; then + exit 0 +fi + +TMP_JSON="$(mktemp)" +node "$MONITOR" --scan > "$TMP_JSON" || exit 0 + +CRIT=$(jq -r '.summary.critical // 0' "$TMP_JSON") +HIGH=$(jq -r '.summary.high // 0' "$TMP_JSON") +MED=$(jq -r '.summary.medium // 0' "$TMP_JSON") +TOTAL=$((CRIT + HIGH + MED)) +VERDICT=$(jq -r '.summary.verdict // "UNKNOWN"' "$TMP_JSON") + +if [ "$TOTAL" -gt 0 ]; then + TOP=$(jq -r '([.skill_scan.findings[]?, .network_check[]?, .process_check[]?, .credential_check[]?] | .[:5] | map("• [" + (.severity // "?") + "] " + (.type // "finding") + " — " + (.detail // .action // "") ) | join("\n"))' "$TMP_JSON") + TEXT="🛡️ SkillFence daily alert\nVerdict: $VERDICT\nCritical: $CRIT | High: $HIGH | Medium: $MED\n\nTop findings:\n$TOP" + + curl -sS -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \ + -d chat_id="$CHAT_ID" \ + --data-urlencode text="$TEXT" \ + -d disable_web_page_preview=true >/dev/null || true +fi + +rm -f "$TMP_JSON"