ping hosts from config file

Hello,

I have config files for my storage where file systems are exported to lots of hosts as root.

I need to write a script in ksh to somehow filter these hosts from the file and ping those and if pingable than do nothing but if not pingable than send an alert to a log file which says:

host xyz not pingable:

file looks like as follows:

/vol/vol1/apps_data01 -sec=sys,rw,root=unixsrv1:unixsrv2:unixsrv3:mercury:mercury01:sunprd01:sunprd02
/vol/vol1/apps_data02 -sec=sys,rw,root=unixsrv1:unixsrv2:unixsrv3:mercury:mercury01:sunprd01:sunprd02
/vol/vol1/apps_data03 -sec=sys,rw,root=unixsrv1:unixsrv2:unixsrv3:mercury:mercury01:sunprd01:sunprd02
/vol/vol1/apps_data04 -sec=sys,rw,root=unixsrv1:unixsrv2:unixsrv3:mercury:mercury01:sunprd01:sunprd02
.
.
/vol/vol1/apps_data45 -sec=sys,rw,root=unixsrv1:unixsrv2:unixsrv3:mercury:mercury01:sunprd01:sunprd02:hpprod07:ibmprod43

I have about 26 of these files on each storage host where hosts names are same and different:

I do not how to capture host names from the file and complete this logic.

Appreciate your help on this.

Not the most efficient solution (ideally you'd pull out all the hostnames, from all the lines then remove duplicates) but you can do this:

#!/bin/sh
while read line
do
  for hostname in `echo $line | cut -d '=' -f 2 | sed 's/:/ /g'`
  do
    if ! ping -s $hostname 1 1 > /dev/null
    then
      /bin/true
    else
      echo "host $hostname not pingable"
    fi
  done
done

usage: scriptname.sh < configfile.txt > logfile.txt

(Untested - you will probably need to debug a bit)