summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xreboot-if-no-net-connection23
-rw-r--r--reboot-if-no-net-connection.service7
-rw-r--r--reboot-if-no-net-connection.timer10
3 files changed, 40 insertions, 0 deletions
diff --git a/reboot-if-no-net-connection b/reboot-if-no-net-connection
new file mode 100755
index 0000000..bb8c43d
--- /dev/null
+++ b/reboot-if-no-net-connection
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+for i in {1..300}; do
+
+ default_gateway=$(
+ ip route \
+ | sed '
+ s/^default\s\+\S\+\s\+\(\S\+\)\s.*$/\1/
+ t
+ d
+ '
+ )
+
+ if [ -n "${default_gateway}" ] \
+ && ping -c1 "${default_gateway}" >/dev/null 2>&1; then
+ exit
+ fi
+
+ sleep 1
+
+done
+
+reboot
diff --git a/reboot-if-no-net-connection.service b/reboot-if-no-net-connection.service
new file mode 100644
index 0000000..cbc0f06
--- /dev/null
+++ b/reboot-if-no-net-connection.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=check net connectivity - reboot in case of error
+After=network-online.target
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/reboot-if-no-net-connection
diff --git a/reboot-if-no-net-connection.timer b/reboot-if-no-net-connection.timer
new file mode 100644
index 0000000..5c39d47
--- /dev/null
+++ b/reboot-if-no-net-connection.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=repeatedly check net connectivity
+
+[Timer]
+RandomizedDelaySec=1min
+OnUnitInactiveSec=10min
+OnBootSec=10min
+
+[Install]
+WantedBy=timers.target