Initial import: WebAisMap
Closes TG-4 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
CONFIG="/etc/aismap/network.json"
|
||||
LOG="/var/log/aismap_to_wifi.log"
|
||||
exec >"$LOG" 2>&1
|
||||
|
||||
echo "=== $(date) start to_wifi ==="
|
||||
|
||||
if [ ! -f "$CONFIG" ]; then
|
||||
echo "ERROR: config not found: $CONFIG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SSID=$(python3 -c "import json; print(json.load(open('$CONFIG'))['wifi_ssid'])")
|
||||
PSK=$(python3 -c "import json; print(json.load(open('$CONFIG'))['wifi_psk'])")
|
||||
WIFI_IP=$(python3 -c "import json; print(json.load(open('$CONFIG'))['wifi_ip'])")
|
||||
GW=$(python3 -c "import json; print(json.load(open('$CONFIG')).get('wifi_gw',''))")
|
||||
DNS=$(python3 -c "import json; print(json.load(open('$CONFIG')).get('wifi_dns','8.8.8.8'))")
|
||||
IFACE=$(python3 -c "import json; print(json.load(open('$CONFIG')).get('iface','wlan0'))")
|
||||
|
||||
if [ -z "$SSID" ]; then
|
||||
echo "ERROR: wifi_ssid is empty"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[1] stop AP services"
|
||||
killall hostapd 2>/dev/null || true
|
||||
killall wpa_supplicant 2>/dev/null || true
|
||||
sleep 1
|
||||
|
||||
echo "[2] reset iface $IFACE"
|
||||
ip link set "$IFACE" down 2>/dev/null || true
|
||||
sleep 1
|
||||
ip link set "$IFACE" up
|
||||
sleep 2
|
||||
|
||||
echo "[3] scan for SSID: $SSID"
|
||||
iw dev "$IFACE" scan 2>/dev/null | grep -F "SSID: $SSID" || echo "WARN: SSID not found in scan, trying anyway"
|
||||
|
||||
echo "[4] build wpa config"
|
||||
wpa_passphrase "$SSID" "$PSK" > /tmp/aismap_wifi.conf
|
||||
|
||||
echo "[5] connect to wifi"
|
||||
wpa_supplicant -B -i "$IFACE" -c /tmp/aismap_wifi.conf
|
||||
sleep 5
|
||||
|
||||
echo "[6] flush old IPs"
|
||||
ip addr flush dev "$IFACE"
|
||||
|
||||
echo "[7] set static IP: $WIFI_IP"
|
||||
ip addr add "$WIFI_IP" dev "$IFACE"
|
||||
|
||||
echo "[8] set default route"
|
||||
ip route del default 2>/dev/null || true
|
||||
if [ -n "$GW" ]; then
|
||||
ip route add default via "${GW}" dev "$IFACE"
|
||||
fi
|
||||
|
||||
echo "[9] set DNS"
|
||||
if [ -n "$DNS" ]; then
|
||||
echo "nameserver $DNS" > /etc/resolv.conf
|
||||
fi
|
||||
|
||||
echo "[10] verify connectivity"
|
||||
sleep 2
|
||||
CURRENT_IP=$(ip -4 addr show "$IFACE" | grep -oP 'inet \K[0-9./]+' || echo "none")
|
||||
echo "IP on $IFACE: $CURRENT_IP"
|
||||
|
||||
if [ -n "$GW" ]; then
|
||||
if ping -c 2 -W 3 "${GW}" >/dev/null 2>&1; then
|
||||
echo "Gateway $GW reachable — WiFi OK"
|
||||
else
|
||||
echo "WARN: gateway $GW unreachable"
|
||||
fi
|
||||
else
|
||||
echo "No gateway configured, skipping ping check"
|
||||
fi
|
||||
|
||||
echo "[11] wpa_supplicant status"
|
||||
wpa_cli -i "$IFACE" status 2>/dev/null || true
|
||||
|
||||
ip addr show dev "$IFACE"
|
||||
iw dev "$IFACE" link 2>/dev/null || true
|
||||
|
||||
echo "=== $(date) done to_wifi ==="
|
||||
Reference in New Issue
Block a user