Newsgroups: comp.unix.shell Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!uunet!convex!usenet From: Tom Christiansen Subject: Re: how to force rsh to exit with status of remote command Message-ID: <1991Jun03.132744.29465@convex.com> Sender: usenet@convex.com (news access account) Nntp-Posting-Host: pixel.convex.com Reply-To: tchrist@convex.COM (Tom Christiansen) Organization: CONVEX Software Development, Richardson, TX References: <18999@cgl.ucsf.EDU> Date: Mon, 03 Jun 1991 13:27:44 GMT Lines: 84 From the keyboard of rodgers@maxwell.mmwb.ucsf.edu (R. P. C. Rodgers, M.D.): :Reading the manual pages concerned with rsh and experimentation thus :far fail to show how rsh can be made to exit with the status of the command :it is executing on a remote host (if indeed this is possible...). :The rsh always seems to exit with a status of 0, even if the command on the :remote hosts fails. rsh will exit !0 if it fails to make the connection, or loses it, or whatnot. I use maarten Litmaath's "ersh" front end [enclosed] when I want an rsh that gives me the remote status. --tom #!/bin/sh # @(#)ersh 2.4 91/01/30 Maarten Litmaath # This rsh front-end returns the exit status of the remote command. # It works OK with sh/csh-compatible shells on the remote (!) side. # If there is no remote command present, /usr/ucb/rlogin is invoked. # Usage: see rsh(1). unset hostname lflag nflag user case $1 in -l) ;; *) hostname=$1 shift esac case $1 in -l) lflag=-l user=$2 shift 2 esac case $1 in -n) nflag=-n shift esac case $hostname in '') hostname=$1 shift esac case $# in 0) exec /usr/ucb/rlogin $lflag ${user+"$user"} "$hostname" esac AWK=' NR > 1 { print prev; prev = $0; prev1 = $1; prev2 = $2; } NR == 1 { prev = $0; prev1 = $1; prev2 = $2; } END { if (prev1 ~ /[0-9]*[0-9]0/) exit(prev1 / 10); if (prev1 == "0") exit(prev2); print prev; exit(1); } ' exec 3>&1 /usr/ucb/rsh "$hostname" $lflag ${user+"$user"} $nflag \ "(${*-:}); sh -c '"'echo "$0 $1" >&2'\'' $?0 "$status"' \ 2>&1 >&3 3>&- | awk "$AWK" >&2 3>&- -- Tom Christiansen tchrist@convex.com convex!tchrist "Perl is to sed as C is to assembly language." -me