#!/usr/bin/env bash # Deploy net_alerter to condo Pi # Usage: ./deploy.sh [access_token] set -euo pipefail SSH_ALIAS="condo" REMOTE_DIR="/opt/net_alerter" SCRIPT="$(dirname "$0")/net_alerter.py" # Matrix access token — get fresh one if not passed if [[ -n "${1:-}" ]]; then TOKEN="$1" else echo "[*] Fetching Matrix access token..." TOKEN=$(curl -s -X POST https://m.example.org/_matrix/client/v3/login \ -H "Content-Type: application/json" \ -d '{"type":"m.login.password","identifier":{"type":"m.id.user","user":"spectre"},"password":"spectre-cfe6b5f9dd10dd31a204e4a7"}' \ | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])") fi echo "[*] Deploying to $SSH_ALIAS..." ssh -o StrictHostKeyChecking=no "$SSH_ALIAS" " sudo mkdir -p $REMOTE_DIR sudo chown \$USER: $REMOTE_DIR " scp -o StrictHostKeyChecking=no "$SCRIPT" "$SSH_ALIAS:$REMOTE_DIR/net_alerter.py" ssh -o StrictHostKeyChecking=no "$SSH_ALIAS" " if ! command -v nmap &>/dev/null; then sudo apt-get install -y nmap fi cat > $REMOTE_DIR/.env < $REMOTE_DIR/run.sh <<'WRAPPER' #!/usr/bin/env bash set -a; source /opt/net_alerter/.env; set +a exec python3 /opt/net_alerter/net_alerter.py WRAPPER chmod +x $REMOTE_DIR/run.sh CRON='*/5 * * * * /opt/net_alerter/run.sh >> /opt/net_alerter/net_alerter.log 2>&1' (crontab -l 2>/dev/null | grep -v net_alerter; echo \"\$CRON\") | crontab - echo '[ok] Deployed. Running first scan...' bash $REMOTE_DIR/run.sh && echo '[ok] First scan complete' " echo "[done] net_alerter deployed and cron set (every 5 min)"