commit b30f1f1e5ed3ccbf725b2aadbf23bfe77e5e1753 Author: Yann Weber Date: Tue Jan 2 14:23:55 2018 +0100 Initial commit diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..54d6cb7 --- /dev/null +++ b/test.sh @@ -0,0 +1,103 @@ +#!/bin/sh +HOSTS_FILES="$HOME/.hosts_scanner" +#HOSTS_FILES="/tmp/hosts" +verbose=0 +res_file=$(mktemp -t hosts_scanner.XXXXXXXXXX) +pids="" +date_cmd="date --rfc-3339=s" + +lock="${res_file}.lock" + +clean_exit() { + echo "Ctrl+C pressed, exiting..." + for pid in $(echo $pids) + do + kill $pid + echo $pid killed + done + rmdir ${res_file}.lock 2>/dev/null + rm -v $res_file + exit 0 +} + +semlock() { + while [ 1 ] + do + mkdir $1 2>/dev/null && break + done +} + +semrelease() { + rmdir $1 +} + +trap clean_exit 2 + +upd_ping() { + # update ping stat file + # $1 host + # $2 file + # $3 lock + lock="$3" + last_up="never" + + while [ 1 ] + do + rep=$(ping -qc 1 $1 2>/dev/null ) + ret=$? + rep=$(echo $rep | sed -nE 's/.*rtt min\/avg\/max\/mdev = [0-9]+\.[0-9]+\/([0-9]+\.[0-9]+)\/.*$/\1/p') + rehost=$(echo $h|sed 's/\./\\./g') + + semlock $lock + + + if [ $ret -eq 0 ] + then + last_up=$($date_cmd) + #echo "${res}$rep $hstr $last_up" >> $2 + else + rep="down" + #echo "${res}down $hstr $last_up" >> $2 + fi + + sed -i "s/^\\s*$rehost\\s.*$/$(printf "%30s %8s %30s\n" $1 $rep "$last_up")/" "$2" + + semrelease $lock + + sleep 5 + done +} + +for h in $(cat "$HOSTS_FILES") +do + printf "%30s %8s %30s\n" $h "unknw" "unknwn" >> $res_file +done + +for h in $(cat "$HOSTS_FILES" ) +do + upd_ping $h $res_file $lock & + pid=$! + pids="${pids}\n$pid" + echo "$h updated by $pid" >&2 +done +sleep 1 + +while [ 1 ] +do + semlock $lock + clear + echo "Ping radar $($date_cmd)\n" + printf "%30s %8s %30s\n" "host" "ping" "last up" + for i in $(seq 70); do echo -n "="; done + echo "" + + #cat $res_file + + #grep -v " down " $res_file + #grep " down " $res_file + + sed -E -e "s/\snever$/$(tput sgr0)\0/" -e "s/^.* down .*$/$(tput setaf 1)\0$(tput sgr0)/" $res_file + + semrelease $lock + sleep 1 +done