wireguard-monitor: Initial commit
Signed-off-by: Milan Pandurov <milanpandurov@pm.me>
This commit is contained in:
45
wireguard-monitor/wireguard-reconnect
Executable file
45
wireguard-monitor/wireguard-reconnect
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
|
||||
GATEWAY_IP="192.168.5.1"
|
||||
PING_DELAY_S=30
|
||||
RECONNECT_ATTEMPTS=10
|
||||
RECONNECT_DELAY=60
|
||||
WG_INTERFACE="home"
|
||||
REBOOT_AFTER_FAILED_ATTEMPTS=true
|
||||
|
||||
FAILED_ATTEMPTS=0
|
||||
|
||||
while : ; do
|
||||
if ! wg show "$WG_INTERFACE" > /dev/null; then
|
||||
echo "INFO: WG interface $WG_INTERFACE is not active, not doing anything"
|
||||
sleep "$PING_DELAY_S"
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! ping -c 1 "$GATEWAY_IP" > /dev/null; then
|
||||
echo "ERROR: Failed to ping the gateway ($GATEWAY_IP). Restarting interface $WG_INTERFACE"
|
||||
wg-quick down "$WG_INTERFACE"
|
||||
echo "INFO: Stopped WG interface $WG_INTERFACE"
|
||||
sleep "$RECONNECT_DELAY"
|
||||
if ! wg-quick up "$WG_INTERFACE"; then
|
||||
echo "WARNING: Failed starting the interface..."
|
||||
else
|
||||
echo "INFO: Started WG interface $WG_INTERFACE"
|
||||
fi
|
||||
|
||||
FAILED_ATTEMPTS=$(( FAILED_ATTEMPTS + 1))
|
||||
if (( FAILED_ATTEMPTS > RECONNECT_ATTEMPTS )); then
|
||||
echo "Failed $FAILED_ATTEMPTS times to recover connection..."
|
||||
if $REBOOT_AFTER_FAILED_ATTEMPTS; then
|
||||
echo "Rebooting..."
|
||||
reboot
|
||||
else
|
||||
echo "Will continue trying..."
|
||||
FAILED_ATTEMPTS=$(( 0 ))
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
sleep "$PING_DELAY_S"
|
||||
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user