On Fri, 8 Mar 2024 at 06:59, Corinna Vinschen <vinschen at redhat.com> wrote: [...]> After a lot of tinkering I found that the following change in > dynamic-forward.sh suddenly made the test succeed. > > In check_socks(): > > ${REAL_SSH} -q -F $OBJ/ssh_config \ > - -o "ProxyCommand ${proxycmd}${s} $h $PORT 2>/dev/null" \ > + -o "ProxyCommand ${proxycmd}${s} $h $PORT" \ > somehost cat ${DATA} > ${COPY} > > It occured to me that my login shell is tcsh, not bash. So I changed > my login shell to bash and, lo and behold, dynamic-forward.sh succeeded > even with the stderr redirection.Nice find! Wow, tsch, I don't think I've used that in this millenium!> Having said that, can this test be changed to be independent of the > user's long shell?Yes we should be able to change to something that invokes ${TEST_SHELL} -c "[whatever]", although it might take a couple of attempts to get the quoting right. Lemme have a try... -- Darren Tucker (dtucker at dtucker.net) GPG key 11EAA6FA / A86E 3E07 5B19 5880 E860 37F4 9357 ECEF 11EA A6FA Good judgement comes with experience. Unfortunately, the experience usually comes from bad judgement.
On Fri, Mar 08, 2024 at 08:53:45AM +1100, Darren Tucker wrote:> On Fri, 8 Mar 2024 at 06:59, Corinna Vinschen <vinschen at redhat.com> wrote: > [...] > > After a lot of tinkering I found that the following change in > > dynamic-forward.sh suddenly made the test succeed. > > > > In check_socks(): > > > > ${REAL_SSH} -q -F $OBJ/ssh_config \ > > - -o "ProxyCommand ${proxycmd}${s} $h $PORT 2>/dev/null" \ > > + -o "ProxyCommand ${proxycmd}${s} $h $PORT" \ > > somehost cat ${DATA} > ${COPY} > > > > It occured to me that my login shell is tcsh, not bash. So I changed > > my login shell to bash and, lo and behold, dynamic-forward.sh succeeded > > even with the stderr redirection. > > Nice find! Wow, tsch, I don't think I've used that in this millenium!Yes, nice find.> > Having said that, can this test be changed to be independent of the > > user's long shell? > > Yes we should be able to change to something that invokes > ${TEST_SHELL} -c "[whatever]", although it might take a couple of > attempts to get the quoting right. Lemme have a try...Wouldn't it be simpler to just use '#!/bin/sh' as the shebang line for the dynamic-forward.sh script? It seems it is a long-standing shortcoming of the C shell that there is no simple way to redirect only stderr. The goal of that regression test isn't specifically to test a multitude of shell implementations, right? Kind regards, Job
On Mar 8 08:53, Darren Tucker wrote:> On Fri, 8 Mar 2024 at 06:59, Corinna Vinschen <vinschen at redhat.com> wrote: > [...] > > After a lot of tinkering I found that the following change in > > dynamic-forward.sh suddenly made the test succeed. > > > > In check_socks(): > > > > ${REAL_SSH} -q -F $OBJ/ssh_config \ > > - -o "ProxyCommand ${proxycmd}${s} $h $PORT 2>/dev/null" \ > > + -o "ProxyCommand ${proxycmd}${s} $h $PORT" \ > > somehost cat ${DATA} > ${COPY} > > > > It occured to me that my login shell is tcsh, not bash. So I changed > > my login shell to bash and, lo and behold, dynamic-forward.sh succeeded > > even with the stderr redirection. > > Nice find! Wow, tsch, I don't think I've used that in this millenium!I'm running tcsh as login shell because I'm Cygwin maintainer for tcsh. It's a case of "eating your own dog food" :)> > Having said that, can this test be changed to be independent of the > > user's long shell? > > Yes we should be able to change to something that invokes > ${TEST_SHELL} -c "[whatever]", although it might take a couple of > attempts to get the quoting right. Lemme have a try...Thanks! Corinna
On Fri, Mar 08, 2024 at 08:53:45AM +1100, Darren Tucker wrote:> On Fri, 8 Mar 2024 at 06:59, Corinna Vinschen <vinschen at redhat.com> wrote:[...]> > Having said that, can this test be changed to be independent of the > > user's long shell? > > Yes we should be able to change to something that invokes > ${TEST_SHELL} -c "[whatever]", although it might take a couple of > attempts to get the quoting right. Lemme have a try...I think this should do it, and it turned out to be simpler than I thought. Can you confirm it works for you? Thanks. Index: dynamic-forward.sh ==================================================================RCS file: /export/cvs/src/regress/usr.bin/ssh/dynamic-forward.sh,v diff -u -p -r1.16 dynamic-forward.sh --- dynamic-forward.sh 11 Jan 2023 00:51:27 -0000 1.16 +++ dynamic-forward.sh 7 Mar 2024 23:03:25 -0000 @@ -51,9 +51,9 @@ check_socks() { for s in 4 5; do for h in 127.0.0.1 localhost; do trace "testing ssh socks version $s host $h (-$direction)" - ${REAL_SSH} -q -F $OBJ/ssh_config \ - -o "ProxyCommand ${proxycmd}${s} $h $PORT 2>/dev/null" \ - somehost cat ${DATA} > ${COPY} + ${REAL_SSH} -q -F $OBJ/ssh_config -o \ + "ProxyCommand ${TEST_SHELL} -c '${proxycmd}${s} $h $PORT 2>/dev/null'" \ + somehost cat ${DATA} > ${COPY} r=$? if [ "x$expect_success" = "xY" ] ; then if [ $r -ne 0 ] ; then -- Darren Tucker (dtucker at dtucker.net) GPG key 11EAA6FA / A86E 3E07 5B19 5880 E860 37F4 9357 ECEF 11EA A6FA Good judgement comes with experience. Unfortunately, the experience usually comes from bad judgement.