Autonomous monitoring script for Erik VPS: - Fetches arXiv cs.CR + cs.AI RSS feeds daily - Fetches HackerNews top stories + keyword RSS feeds - Classifies relevance via Claude Haiku API (HIGH/MEDIUM/LOW/SKIP) - HIGH findings: generates TypeScript detection rules via Claude - Appends rules to src/detection/AutoGeneratedRules.ts - Runs tsc --noEmit before committing (zero errors required) - Commits + pushes to Gitea on success - JSON report saved to /opt/scripts/logs/shieldx-report-YYYY-MM-DD.json - Cron: 0 6 * * * (6:00 UTC = 8:00 Berlin) - deploy-monitor-erik.sh: one-command deploy to Erik
42 lines
1.4 KiB
Bash
42 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Deploy arXiv monitor script to Erik VPS
|
|
# Run once from local machine: bash scripts/deploy-monitor-erik.sh
|
|
set -euo pipefail
|
|
|
|
ERIK="root@217.154.82.179"
|
|
SCRIPTS_DIR="/opt/scripts"
|
|
|
|
echo "=== Deploying ShieldX arXiv Monitor to Erik ==="
|
|
|
|
# 1. Copy monitor script
|
|
scp scripts/arxiv-monitor.mjs "${ERIK}:${SCRIPTS_DIR}/arxiv-monitor.mjs"
|
|
ssh "$ERIK" "chmod +x ${SCRIPTS_DIR}/arxiv-monitor.mjs"
|
|
|
|
# 2. Create .env if not exists
|
|
ssh "$ERIK" "if [ ! -f ${SCRIPTS_DIR}/.env ]; then
|
|
cat > ${SCRIPTS_DIR}/.env << 'ENVEOF'
|
|
# ShieldX Monitor Config
|
|
ANTHROPIC_API_KEY=YOUR_KEY_HERE
|
|
GITEA_TOKEN=5df44f12b35bdbb69f78004aa494cb8dea41bc87
|
|
GITEA_BASE_URL=https://gitea.context-x.org
|
|
GITEA_USER=rene
|
|
LOG_DIR=/opt/scripts/logs
|
|
WORK_DIR=/tmp/shieldx-monitor
|
|
ENVEOF
|
|
echo 'Created .env — set ANTHROPIC_API_KEY!'
|
|
else
|
|
echo '.env already exists — not overwriting'
|
|
fi"
|
|
|
|
# 3. Add cron if not already set
|
|
ssh "$ERIK" "(crontab -l 2>/dev/null | grep -q 'arxiv-monitor') && echo 'Cron already set' || (crontab -l 2>/dev/null; echo '0 6 * * * node /opt/scripts/arxiv-monitor.mjs >> /opt/scripts/logs/arxiv-monitor.log 2>&1') | crontab -"
|
|
|
|
echo ""
|
|
echo "=== Done ==="
|
|
echo ""
|
|
echo "Next steps on Erik:"
|
|
echo " 1. Set ANTHROPIC_API_KEY in ${SCRIPTS_DIR}/.env"
|
|
echo " 2. Test run: node /opt/scripts/arxiv-monitor.mjs"
|
|
echo " 3. Check logs: tail -f /opt/scripts/logs/arxiv-monitor.log"
|
|
echo " 4. Cron runs daily at 6:00 UTC (8:00 Berlin)"
|