Welcome to the Linux Foundation Forum!

multiple ip ping in ip route

!/bin/bash

date/time string is passed as first argument and Sample IP File as Second paramter

dtime=$1

IP_FILE="IP_ADDRESS.TXT" - SAMPLE IP_ADDRESS.TXT

LOGFILE="PingIPRoute_log_$(date +%F_%T).TXT"

echo "********************************************************************************" >>$LOGFILE
echo "******** PING ALL IP ROUTE SCRIPT STARTED AT "$(date +%F_%T) >>$LOGFILE
echo "******** PARAM DOWNTIME - "$dtime >>$LOGFILE
echo "******** LOGFILE - "$LOGFILE >>$LOGFILE

finally, check if this formatted value equals the original input or not

if ! date +"%Y%m%d%hh%mm" -d "$dtime" &> /dev/null; then

echo "$1 - invalid date string"

exit

fi

GATEWAY_DEFAULT=$(ip route list | sed -n -e "s/^default.[[:space:]]([[:digit:]]+.[[:digit:]]+.[[:digit:]]+.[[:digit:]]+)./\1/p")

ping $GATEWAY_DEFAULT -c 1 -t 1 &> /dev/null

if [ $? -eq 0 ]; then

   echo     SUCCESS  $(date +%F_%T) Default Gateway $GATEWAY_DEFAULT is UP >>$LOGFILE;

    else

    echo    ERROR   $(date +%F_%T) Default Gateway $GATEWAY_DEFAULT  is DOWN >>$LOGFILE;

fi

cat $IP_FILE

# if IP_FILE <>''; then

ARRAY_OF_IP=$(cat $IP_FILE | grep -E -o "([0-9]{1,3}[.]){3}[0-9]{1,3}" )

#else
    ARRAY_OF_IP=$(ip route | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
#fi

echo $ARRAY_OF_IP

for ip in ${ARRAY_OF_IP};
do
ping $ip -c 1 -t 1 &> /dev/null
if [ $? -eq 0 ]; then

   echo     SUCCESS  $(date +%F_%T)  Host $ip ping is UP >>$LOGFILE;

    else

    echo    ERROR  $(date +%F_%T)  Host $ip ping is DOWN >>$LOGFILE;

fi

done

Categories

Upcoming Training