dan@maccs.McMaster.CA (Dan Trottier) (09/30/88)
While in the process of rewritting our backup scripts I ran into a problem
with the return status of rsh(1).
I'm trying to do something (bourne shell) along the lines of:
if rsh $host rdump ${level}${opt} ${dhost}:${dev} ${fs} > ${log}
then
echo "$host: $fs completed"
else
echo "$host: $fs failed"
fi
The problem is that rsh(1) doesn't return the exit status of the command it
runs. Now I could write a script on the remote host that would be executed
instead of rdump(8) but I would like to avoid adding or supporting software
on those remote hosts.
The script runs on a Sun 4/280 OS 4.0 and does remote dumps on various
other machines.
Any ideas?
Thanks
--
Dan Trottier dan@maccs.McMaster.CA
Dept of Computer Science ...!uunet!utai!utgpu!maccs!dan
McMaster University (416) 525-9140 x3444D. Allen [CGL]) (10/04/88)
dan@maccs.McMaster.CA (Dan Trottier) writes: > The problem is that rsh(1) doesn't return the exit status of the command it > runs. Try a variant of this: #!/bin/sh PATH=/bin:/usr/bin:/usr/ucb; export PATH umask 022 status=` rsh somehost -n "somecommand && echo SUCCESS" 2>&1 ` case "$status" in SUCCESS) echo "${0}: it worked" ;; *) echo "${0}: it failed: $status" ;; esac If your command produces output, you may have to fiddle things a bit to get the SUCCESS onto stderr and only collect it. You can also change '&&' to ';' and echo the actual return status from the remote machine instead of the word SUCCESS. -- -IAN! (Ian! D. Allen) University of Waterloo