Testing Connectivity with fping and send mail if any hosts are unreachable

last updated in Categories CentOS, Debian Linux, Gentoo Linux, Hardware, Howto, Linux, Networking, Shell scripting, Sys admin, Tips, Ubuntu Linux, UNIX

fping is one my favorite network profiling / scripting tool. It uses the Internet Control Message Protocol (ICMP) echo request to determine if a target host is responding or not.


Unlike ping , fping is meant to be used in scripts, so its output is designed to be easy to parse.

You can easily write perl / shell script to check a list of hosts and send mail if any are unreachable.

fping command example

Just type the following command to see if we can reach to router:
$ fping router

router is alive

You can read list of targets (hosts / servers) from a file. The -f option can only be used by the root user. Regular users should pipe in the file via
I/O redirectors (stdin). For example read all host names from ~/.ping.conf file
$ fping < ~/.ping.conf

You can also netmask to ping the entire network i.e generate a target list from a supplied IP netmask. For example, ping the class C 192.168.1.x:
$ fping -g
$ fping -g

Sample shell script to send email if host is down

HOSTS="router sun printer laptop sony-laptop xbox backup-server"
for h in $HOSTS
  fping -u $h >& /dev/null
  if [ $? -ne 0 ]; then
          echo ${h} host is down send email
          # mail -s "Host ${h} down" admin@you.com </dev/null

Another good example is when you want to perform an action only on hosts that are currently reachable.

$myHosts = ‘cat /etc/hosts.backup | fping -a‘;
foreach $host (split(/\n/,$myHosts)) {
        # take action or call other function


Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

8 comment

  1. It’s good tool but it is not in-built in redhat.
    [root@server1 scripts]# fping
    -bash: fping: command not found

    from where can I download.

  2. cat ping.conf

  3. Hi Vivek,
    First of all, thank you for all of the great nix guides which you have posted. I use them all the time.

    So I am a somewhat new network admin and I am administering some Fedora 16 boxes. I really like your script here, so I have put it on my testing server (which I use for testing new scripts and software before putting them on the important servers). When I run the script myself, it works perfectly. However, when I run it from crontab, it sends the error emails even though all the hosts I have put into the script are definitely up.

    Is there something about crontab which makes this script work differently?


    1. Set the full path to binaries i.e. fping command. Also, check your cron log file in /var/log directory.

    Have a question? Post it on our forum!