31 lines
605 B
Bash
31 lines
605 B
Bash
#!/bin/sh
|
|
|
|
if [ `id -u` -ne 0 ] || [ "$1" = "" ]; then exit 1; fi
|
|
|
|
if [ -x /usr/bin/fping ]; then
|
|
PING="/usr/bin/fping"
|
|
else
|
|
PING="/bin/ping -c 2"
|
|
fi
|
|
|
|
iface="$1"
|
|
which=""
|
|
|
|
while read addr pingme scheme; do
|
|
if [ "$which" ]; then continue; fi
|
|
|
|
#echo " Trying $addr & $pingme ($scheme)" >&2
|
|
|
|
ip addr add $addr dev $iface >/dev/null 2>&1
|
|
ip link set $iface up >/dev/null 2>&1
|
|
|
|
if $PING $pingme >/dev/null 2>&1; then
|
|
which="$scheme"
|
|
fi
|
|
ip link set $iface down >/dev/null 2>&1
|
|
ip addr del $addr dev $iface >/dev/null 2>&1
|
|
done
|
|
|
|
if [ "$which" ]; then echo $which; exit 0; fi
|
|
exit 1
|