Add access-point.sh
This commit is contained in:
+136
@@ -0,0 +1,136 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Configuration =======================================================================================================
|
||||
WLAN0_IFACE="wlan0"
|
||||
DHCP_IP="10.10.10.1"
|
||||
DHCP_START="10.10.10.100"
|
||||
DHCP_END="10.10.10.250"
|
||||
|
||||
SSID="$HOSTNAME"
|
||||
PASSWORD="guesswhatitis"
|
||||
# End of Configuration ================================================================================================
|
||||
|
||||
is_connected() {
|
||||
[ -n "$(iwgetid -r 2>/dev/null)" ]
|
||||
}
|
||||
|
||||
is_ap_on() {
|
||||
[ "$(systemctl is-active hostapd 2>/dev/null)" == "active" ]
|
||||
}
|
||||
|
||||
enable_ap() {
|
||||
if is_ap_on; then return; fi
|
||||
echo "[$(date '+%H:%M:%S')] Enabling AP: $SSID"
|
||||
# Bring down wlan0 and reset it
|
||||
ip link set $WLAN0_IFACE down 2>/dev/null || true
|
||||
sleep 1
|
||||
ip link set $WLAN0_IFACE up 2>/dev/null || true
|
||||
sleep 1
|
||||
# Assign static IP for AP
|
||||
ip addr flush dev $WLAN0_IFACE 2>/dev/null || true
|
||||
ip addr add "$DHCP_IP/24" dev $WLAN0_IFACE
|
||||
# Configure hostapd
|
||||
cat > /etc/hostapd/hostapd.conf <<EOF
|
||||
interface=$WLAN0_IFACE
|
||||
ssid=$SSID
|
||||
hw_mode=g
|
||||
channel=6
|
||||
wpa=2
|
||||
wpa_passphrase=$PASSWORD
|
||||
wpa_key_mgmt=WPA-PSK
|
||||
wpa_pairwise=CCMP
|
||||
EOF
|
||||
systemctl unmask hostapd 2>/dev/null || true
|
||||
systemctl start hostapd
|
||||
# Configure dnsmasq for DHCP
|
||||
cat > /etc/dnsmasq.conf <<EOF
|
||||
interface=$WLAN0_IFACE
|
||||
dhcp-range=$DHCP_START,$DHCP_END,255.255.255.0,24h
|
||||
EOF
|
||||
systemctl restart dnsmasq
|
||||
}
|
||||
|
||||
disable_ap() {
|
||||
if ! is_ap_on; then return; fi
|
||||
echo "[$(date '+%H:%M:%S')] Disabling AP"
|
||||
systemctl stop hostapd 2>/dev/null || true
|
||||
systemctl restart dnsmasq 2>/dev/null || true
|
||||
ip addr del "$DHCP_IP/24" dev $WLAN0_IFACE 2>/dev/null || true
|
||||
}
|
||||
|
||||
# Main loop
|
||||
echo "AP Failover Service started"
|
||||
while true; do
|
||||
is_connected && disable_ap || enable_ap
|
||||
sleep 30
|
||||
done
|
||||
root@radio:/# ls
|
||||
access-point.sh boot etc lib media opt root sbin sys usr
|
||||
bin dev home lost+found mnt proc run srv tmp var
|
||||
root@radio:/# cat access-point.sh
|
||||
#!/bin/bash
|
||||
|
||||
# Configuration =======================================================================================================
|
||||
WLAN0_IFACE="wlan0"
|
||||
DHCP_IP="10.10.10.1"
|
||||
DHCP_START="10.10.10.100"
|
||||
DHCP_END="10.10.10.250"
|
||||
|
||||
SSID="$HOSTNAME"
|
||||
PASSWORD="guesswhatitis"
|
||||
# End of Configuration ================================================================================================
|
||||
|
||||
is_connected() {
|
||||
[ -n "$(iwgetid -r 2>/dev/null)" ]
|
||||
}
|
||||
|
||||
is_ap_on() {
|
||||
[ "$(systemctl is-active hostapd 2>/dev/null)" == "active" ]
|
||||
}
|
||||
|
||||
enable_ap() {
|
||||
if is_ap_on; then return; fi
|
||||
echo "[$(date '+%H:%M:%S')] Enabling AP: $SSID"
|
||||
# Bring down wlan0 and reset it
|
||||
ip link set $WLAN0_IFACE down 2>/dev/null || true
|
||||
sleep 1
|
||||
ip link set $WLAN0_IFACE up 2>/dev/null || true
|
||||
sleep 1
|
||||
# Assign static IP for AP
|
||||
ip addr flush dev $WLAN0_IFACE 2>/dev/null || true
|
||||
ip addr add "$DHCP_IP/24" dev $WLAN0_IFACE
|
||||
# Configure hostapd
|
||||
cat > /etc/hostapd/hostapd.conf <<EOF
|
||||
interface=$WLAN0_IFACE
|
||||
ssid=$SSID
|
||||
hw_mode=g
|
||||
channel=6
|
||||
wpa=2
|
||||
wpa_passphrase=$PASSWORD
|
||||
wpa_key_mgmt=WPA-PSK
|
||||
wpa_pairwise=CCMP
|
||||
EOF
|
||||
systemctl unmask hostapd 2>/dev/null || true
|
||||
systemctl start hostapd
|
||||
# Configure dnsmasq for DHCP
|
||||
cat > /etc/dnsmasq.conf <<EOF
|
||||
interface=$WLAN0_IFACE
|
||||
dhcp-range=$DHCP_START,$DHCP_END,255.255.255.0,24h
|
||||
EOF
|
||||
systemctl restart dnsmasq
|
||||
}
|
||||
|
||||
disable_ap() {
|
||||
if ! is_ap_on; then return; fi
|
||||
echo "[$(date '+%H:%M:%S')] Disabling AP"
|
||||
systemctl stop hostapd 2>/dev/null || true
|
||||
systemctl restart dnsmasq 2>/dev/null || true
|
||||
ip addr del "$DHCP_IP/24" dev $WLAN0_IFACE 2>/dev/null || true
|
||||
}
|
||||
|
||||
# Main loop
|
||||
echo "AP Failover Service started"
|
||||
while true; do
|
||||
is_connected && disable_ap || enable_ap
|
||||
sleep 30
|
||||
done
|
||||
Reference in New Issue
Block a user