APmanageur Wi-Fi : conteneur Debian + Apache
This commit is contained in:
commit
dbebafd34a
8 files changed
+906
No files matched your search
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
log() { echo "[ap-wifi] $*"; }
|
||||
|
||||
# 1. Interface Wi-Fi (Netgear) --------------------------------------------------
|
||||
IFACE="${AP_INTERFACE:-}"
|
||||
mapfile -t FOUND < <(iw dev 2>/dev/null | awk '$1=="Interface"{print $2}')
|
||||
if [[ -z "$IFACE" ]]; then
|
||||
if [[ ${#FOUND[@]} -eq 1 ]]; then
|
||||
IFACE="${FOUND[0]}"
|
||||
else
|
||||
log "ERREUR : précisez AP_INTERFACE. Interfaces Wi-Fi détectées : ${FOUND[*]:-aucune}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
iw dev "$IFACE" info >/dev/null 2>&1 || { log "ERREUR : interface '$IFACE' introuvable (détectées : ${FOUND[*]:-aucune})"; exit 1; }
|
||||
export AP_INTERFACE="$IFACE"
|
||||
log "Interface utilisée : $IFACE"
|
||||
|
||||
# 2. NetworkManager : ne gère que l'interface choisie ---------------------------
|
||||
mkdir -p /etc/NetworkManager/conf.d /run/dbus /run/NetworkManager /var/run/apache2 /var/lock/apache2 /data
|
||||
cat > /etc/NetworkManager/conf.d/10-ap.conf <<EOF
|
||||
[main]
|
||||
plugins=keyfile
|
||||
no-auto-default=*
|
||||
|
||||
[keyfile]
|
||||
unmanaged-devices=*,except:interface-name:${IFACE}
|
||||
|
||||
[device]
|
||||
wifi.scan-rand-mac-address=no
|
||||
EOF
|
||||
|
||||
rm -f /run/dbus/pid /run/NetworkManager/*.pid
|
||||
dbus-daemon --system --fork
|
||||
NetworkManager --no-daemon &
|
||||
NM_PID=$!
|
||||
|
||||
for _ in $(seq 1 30); do
|
||||
nmcli -t general status >/dev/null 2>&1 && break
|
||||
sleep 1
|
||||
done
|
||||
nmcli -t general status >/dev/null 2>&1 || { log "ERREUR : NetworkManager ne répond pas"; exit 1; }
|
||||
|
||||
rfkill unblock wifi 2>/dev/null || true
|
||||
nmcli radio wifi on 2>/dev/null || true
|
||||
nmcli device set "$IFACE" managed yes 2>/dev/null || true
|
||||
log "NetworkManager prêt"
|
||||
|
||||
# 3. API Python (port 8080) + Apache (port 80) ------------------------------------
|
||||
python3 /app/ap_dashboard.py &
|
||||
API_PID=$!
|
||||
apache2ctl -D FOREGROUND &
|
||||
WEB_PID=$!
|
||||
|
||||
trap 'log "Arrêt"; kill "$WEB_PID" "$API_PID" "$NM_PID" 2>/dev/null || true; exit 0' TERM INT
|
||||
|
||||
log "Interface web : http://<ip-de-la-machine>:1001/ (API directe : port 8080)"
|
||||
wait -n
|
||||
log "Un service s'est arrêté, fermeture du conteneur"
|
||||
kill "$WEB_PID" "$API_PID" "$NM_PID" 2>/dev/null || true
|
||||
exit 1
|
||||
Reference in new issue
Block a user