Why the redirect from descriptor 4? :: psi
On Oct 1, 2013, at 3:13 PM, Duffie Cooley <dcoo...@nicira.com> wrote: > What about this? > > referenced from here. > > http://unix.stackexchange.com/questions/14270/get-exit-status-of-process-thats-piped-to-another/70675#70675 > > diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in > index 1684ddc..5286e12 100644 > --- a/utilities/ovs-lib.in > +++ b/utilities/ovs-lib.in > @@ -41,6 +41,11 @@ ovs_ctl_log () { > echo "$@" >> "${logdir}/ovs-ctl.log" > } > > +stdintoexitstatus () { > + read exitstatus > + return $exitstatus > +} > + > ovs_ctl () { > case "$@" in > *"=strace"*) > @@ -51,7 +56,7 @@ ovs_ctl () { > ;; > *) > echo "`date -u`:$@" >> "${logdir}/ovs-ctl.log" > - "${datadir}/scripts/ovs-ctl" "$@" 2>&1 | tee -a > "${logdir}/ovs-ctl.log" > + (((("${datadir}/scripts/ovs-ctl" "$@" 2>&1 ; echo $? > &3) > | tee -a "${logdir}/ovs-ctl.log" ) 3>&1) | stdintoexitstatus) 4>&1 > ;; > esac > } > > > Thanks, > > Duffie > > > On 10/01/2013 11:48 AM, Gurucharan Shetty wrote: >> This patch works for me, but it is a little hacky. >> >> diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in >> index 1684ddc..b0cdaf2 100644 >> --- a/utilities/ovs-lib.in >> +++ b/utilities/ovs-lib.in >> @@ -51,7 +51,13 @@ ovs_ctl () { >> ;; >> *) >> echo "`date -u`:$@" >> "${logdir}/ovs-ctl.log" >> - "${datadir}/scripts/ovs-ctl" "$@" 2>&1 | tee -a >> "${logdir}/ovs-ctl.log" >> + unique=`(uuidgen) 2>/dev/null` || unique=`date +"%Y %b %d %T"` >> + mkfifo "/tmp/${unique}" >> + tee -a "${logdir}/ovs-ctl.log" < "/tmp/${unique}" & >> + "${datadir}/scripts/ovs-ctl" "$@" > "/tmp/${unique}" 2>&1 >> + rc=$? >> + rm "/tmp/${unique}" >> + return $rc >> ;; >> esac >> } >> >> On Tue, Oct 1, 2013 at 10:11 AM, Gurucharan Shetty <shet...@nicira.com> >> wrote: >>> On Mon, Sep 30, 2013 at 7:27 PM, Duffie Cooley <dcoo...@nicira.com> wrote: >>>> From: Duffie Cooley <dcoo...@nicira.com> >>>> This is a fix for a request to make sure that the openvswitch status >>>> command >>>> in rhel based distros gives a useful exit status. That was fixed in >>>> >>>> commit 5e0c05bc058c78a11be6747f62e6ad88e5d06b70 >>>> debian: Fix exit status of openvswitch-switch init script "status" command >>>> >>>> >>>> >>>> Signed-off-by: Duffie Cooley <dcoo...@nicira.com> >>>> --- >>>> rhel/etc_init.d_openvswitch | 3 ++- >>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/rhel/etc_init.d_openvswitch b/rhel/etc_init.d_openvswitch >>>> index 7e64132..6a53cef 100755 >>>> --- a/rhel/etc_init.d_openvswitch >>>> +++ b/rhel/etc_init.d_openvswitch >>>> @@ -5,7 +5,7 @@ >>>> # chkconfig: 2345 09 91 >>>> # description: Manage Open vSwitch kernel modules and user-space daemons >>>> >>>> -# Copyright (C) 2009, 2010, 2011 Nicira, Inc. >>>> +# Copyright (C) 2009, 2010, 2011, 2013 Nicira, Inc. >>>> # >>>> # Licensed under the Apache License, Version 2.0 (the "License"); >>>> # you may not use this file except in compliance with the License. >>>> @@ -81,6 +81,7 @@ case $1 in >>>> ;; >>>> status) >>>> ovs_ctl status >>>> + exit $? >>>> ;; >>>> version) >>>> ovs_ctl version >>>> -- >>>> 1.8.1.2 >>>> >>> I don't think this helps. The exit status is always 0. I broke this >>> with my implementation of 'ovs_ctl' in ovs-lib tee'ing the o/p to >>> ovs-ctl.log. tee will return an exit status of success even though the >>> previous command returned an exit status of 1. >>> >>> I can use the PIPESTATUS variable. But I don't think it is POSIX >>> compliant. Any other ideas? >>> > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev