On 2007-08-30 01:03, Hinkie <[EMAIL PROTECTED]> wrote:
> Hi
> I want to run a cron job in /etc/crontab that runs (ifconfig em0 down;
> ifconfig em0 up) if my cables static ip gateway can't be pinged but I
> can't figure it out.  I can't get the syntax that runs in the command
> window, to then put intot the crontab....
> Can anyone help me?
> I've tried all sorts such as:
> if (ping -c1 a.b.c.1 != 1) then ifconfig em0 down; ifconfig em0 up endif
> if ping -c1 a.b.c.1 != 1 then ping -c1 endif
> if ping -c1 a.b.c.1 (ifconfig em0 down; ifconfig em0 up)
> if ( ping -c1 a.b.c.1 != 1) ( ping -c1 )
> if $command("=ping -c1 a.b.c.1 =0") echo sucess
> if ping -c 1 -w 1 a.b.c.1 >/dev/null  echo sucess
> if [[ (ping -q -c 3 a.b.c.1) == @(*100% packet loss*) ]]; echo sucess
> if ! ping -c a.b.c.1 > /dev/null ; then echo sucess ; echo fail; fi

I see you are using csh(1) shell syntax.

The crontab entries are passed as commands to /bin/sh, so this
sort of syntax won't really work.

In general, I find the idea of long, complex crontab entries
_very_ error-prone, and I prefer writing scripts which are
_callable_ from cron.

For example, I have several local clones of repositories which
can be synchronized using Mercurial, but properly synchronizing
them would require running:



        cd "${repodir}"
        if test $? -ne 0 ; then
                echo "${repodir}: directory not accessible." >&2
                exit 1

        hg pull

Instead of cluttering my crontab with long-winded, complex stuff
like this, I wrote a short shell script -- like the one above --
and saved it in my `~/cron.d' directory.  Now my crontab

    */2 * * * * ${HOME}/cron.d/hg-pull-crew.sh

Try something similar too.  It's easier to maintain potentially
complex actions, if you `abstract away' all the complexity behind
a script.

Then you can also use whatever you prefer to write the scripts,
like csh(1), Perl, or Python.  Just make the script file
executable and make sure it contains the proper '#!' line.

- Giorgos

freebsd-questions@freebsd.org mailing list
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to