Initial commit

This commit is contained in:
Yann Weber 2018-01-02 14:23:55 +01:00
commit b30f1f1e5e

103
test.sh Executable file
View file

@ -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