X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Fstretch%2Ffiles%2Fwait-online.sh;fp=modules%2Fstretch%2Ffiles%2Fwait-online.sh;h=21f3ac60e254fcfe9858a719224a95f4c58372ca;hb=76ca91bce24ecbcbcc4e62a37aa06fd0fb9f96c7;hp=0000000000000000000000000000000000000000;hpb=46cee04ab06b23ab6e9e4baba655cf470d10cfc4;p=mirror%2Fdsa-puppet.git diff --git a/modules/stretch/files/wait-online.sh b/modules/stretch/files/wait-online.sh new file mode 100755 index 000000000..21f3ac60e --- /dev/null +++ b/modules/stretch/files/wait-online.sh @@ -0,0 +1,80 @@ +#!/bin/sh +# from busters's ifupdown 0.8.32 package (as of May 2018) +set -e + +WAIT_ONLINE_METHOD="ifup" +WAIT_ONLINE_IFACE="" +WAIT_ONLINE_ADDRESS="" +WAIT_ONLINE_TIMEOUT=300 + +[ -f /etc/default/networking ] && . /etc/default/networking + +case "$WAIT_ONLINE_METHOD" in +route) + [ -n "$WAIT_ONLINE_ADDRESS" ] || WAIT_ONLINE_ADDRESS=default + (/usr/bin/timeout "$WAIT_ONLINE_TIMEOUT" /bin/ip mon r & /bin/ip -4 r s; /bin/ip -6 r s) | /bin/grep -q "^$WAIT_ONLINE_ADDRESS\>" + ;; + +ping) + if [ -z "$WAIT_ONLINE_ADDRESS" ]; then + echo "No WAIT_ONLINE_ADDRESS specified" >&2 + exit 1 + fi + /bin/ping -q -c 1 -w "WAIT_ONLINE_TIMEOUT" "$WAIT_ONLINE_ADDRESS" >/dev/null + ;; + +ping6) + /bin/ping6 -q -c 1 -w "WAIT_ONLINE_TIMEOUT" "$WAIT_ONLINE_ADDRESS" >/dev/null + ;; + +ifup|iface|interface) + up=false + if [ -z "$WAIT_ONLINE_IFACE" ]; then + auto_list="$(/sbin/ifquery -X lo --list)" + hotplug_list="$(/sbin/ifquery -X lo --allow=hotplug --list)" + if [ -n "$auto_list" ]; then + for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do + up=true + for iface in $auto_list; do + if ! /sbin/ifquery --state $iface >/dev/null; then + up=false + break + fi + done + if [ $up = true ]; then + break + fi + sleep 1 + done + elif [ -n "$(/sbin/ifquery --allow=hotplug --list)" ]; then + for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do + if [ -n "$(/sbin/ifquery -X lo --allow=hotplug --state)" ]; then + up=true + break + fi + sleep 1 + done + else + exit 0 + fi + else + for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do + if [ -n "$(/sbin/ifquery --state $WAIT_ONLINE_IFACE)" ]; then + up=true + break + fi + sleep 1 + done + fi + [ $up = true ] || exit 1 + ;; + +no|none) + exit 0 + ;; + +*) + echo "Unknown wait method $WAIT_ONLINE_METHOD" >&2 + exit 1 + ;; +esac