#!/usr/bin/env bash # Deploy net_alerter to condo Pi (10.0.0.0) # Usage: ./deploy.sh [access_token] set -euo pipefail PI_USER="pi" PI_HOST="10.0.0.0" PI_KEY="$HOME/.ssh/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 $PI_HOST..." ssh -i "$PI_KEY" -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" " sudo mkdir -p $REMOTE_DIR sudo chown \$USER: $REMOTE_DIR " scp -i "$PI_KEY" -o StrictHostKeyChecking=no "$SCRIPT" "$PI_USER@$PI_HOST:$REMOTE_DIR/net_alerter.py" ssh -i "$PI_KEY" -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" " # Install nmap if missing if ! command -v nmap &>/dev/null; then sudo apt-get install -y nmap fi # Write env config 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 # Install cron (every 5 minutes) 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)"