Add net_alerter: new device join alerts via Matrix to condo Pi
This commit is contained in:
Executable
+64
@@ -0,0 +1,64 @@
|
||||
#!/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 <<EOF
|
||||
MATRIX_HOMESERVER=https://m.example.org
|
||||
MATRIX_ACCESS_TOKEN=$TOKEN
|
||||
MATRIX_ROOM_ID=!REDACTED:example.org
|
||||
NET_ALERTER_DB=$REMOTE_DIR/devices.db
|
||||
EOF
|
||||
chmod 600 $REMOTE_DIR/.env
|
||||
|
||||
# Write wrapper that sources env
|
||||
cat > $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)"
|
||||
Reference in New Issue
Block a user