ping from cron

Hello

I wrote a shell script to poll network. It works fine from command line, but doesn't want to work from cron.
To clarify the problem, I wrote simple test file (test.ksh):
ping -c1 -q 172.27.38.2 > /path/res.log

when I do:
>ksh test.ksh

it works fine, and res.log populated with ping info.
but when I'm calling it from cron:
29 15 * * * ksh /path/test.ksh

it creates res.log with 0 size and that's it.
Why doesn't it work from cron?

Thanks,
Vlad

You may want to add...

>/tmp/test.ksh.err 2>&1

...to the end of your cron job line.
This may give you some hint as to why
the shell script is not working.

Sometimes, you need to specify the full path
name to commands when running under cron as
they may not get a full environment set when
the execute.

In your shell try...

!#/bin/ksh
/bin/ping -c1 -q 172.27.38.2 > /path/res.log
# assuming ping is in /bin

Your cron like...
29 15 * * * ksh /path/test.ksh >/tmp/test.ksh.err 2>&1

This is how we ping other boxes to ensure their up and running.
Nb: This is run on a SCO Unix box.

Script:

# more /usr/users/operator/check_rcmd
if [ `rcmd $1 hostname | grep someweb.com` ]
then
  echo OK
else
  mailx -s "Unable to access SomeWeb server $1" ops@somedomain.com <<END
`hostname` cannot perform remote commands on $1
This may effect the ability to do bookings on $1
Follow TVL escalation procedure to resolve
END
fi
#

From Cron:

# Check rcmd is availble.  Test for situation where corruption of the
# authorisation database was preventing remote access 
10,40 * * * * /usr/users/operator/check_rcmd 168.153.251.80 > /dev/null 2>&1

Hope that helps some. :slight_smile:

You were right! it was path to ping should be /sbin/ping instead of just ping! how stupid of me!

Thanks guys