- Kod: Markera allt
#! /bin/bash
#
#####################################################################
#
function usage {
cat << EOD
$CMDNAME [-t milliseconds | --timeout=milliseconds]
-t|--timeout
Spcifies the timeout for fping if the name is not immediately found. The default is 200 millisconds,
but for heavy loaded networks it should probably be a bit longer. If specified too short, some nodes
may be missed if they do not answer in time.
EOD
exit
}
#
#####################################################################
#
TEMP=`getopt -oht: --long help,timeout -n $(basename $0) -- "$@"`
if [[ $? -ne 0 ]]; then
usage
fi
eval set -- "$TEMP"
TIMEOUT="200"
CMDNAME=$(basename $0)
while true; do
case $1 in
-h|--help)
usage
exit
;;
-t|--timeout)
shift
TIMEOUT=$1
shift
;;
--)
shift
break
;;
*)
echo "-Got a star... [$1]"
exit
;;
esac
done
#
#####################################################################
#
echo
NET=$(ip route | grep default | grep metric | awk '{ print $3 }' | awk -F . '{ print $1"."$2"."$3 }')
for NODE in {1..255}; do
ADDR=$NET".$NODE"
NAME=$(dig -x $ADDR | grep -A1 "ANSWER SECTION" | tail -1 | awk '{ print $5 }' | sed 's/\.//')
printf "\r$NODE"
if [[ ! -z $NAME ]]; then
printf "\r%-16s%s\n" $ADDR $NAME
else
fping -c 1 -t$TIMEOUT $ADDR >> /dev/null 2>&1
if [[ $? == 0 ]]; then
printf "\r%-16s%s\n" $ADDR "<unknown>"
fi
fi
done
printf "\r \n"
#
Det letar upp alla noder som är definierade eller som svarar.
