On Tue, Apr 25, 2023 at 01:06:35PM -0600, Ashlen wrote: >On 2023-04-25 10:45, rea...@catastrophe.net wrote: >> After upgrading to 7.3 autossh is failing using the following rc script >> in /etc/rc.d/autossh. It looks like maybe switching to $daemon_user is >> not happening to find the correct ssh config stanzas? Thanks in advance >> for any help. >> >> >> ## Startup configuration >> >> #!/bin/ksh >> # start autossh tunnel >> # requires remoteuser user with $HOME/.ssh/config and keys >> >> daemon="/usr/local/bin/autossh" >> daemon_flags_1="-M 0 -f -N tun-remoteA" >> daemon_flags_1="-M 0 -f -N tun-remoteB" >> daemon_user="remoteuser" >> >> . /etc/rc.d/rc.subr >> >> rc_reload=NO >> >> pexp="autossh:.*" >> >> # Child will not return a config parsing error to the parent. >> rc_start() { >> # use rcexec here since daemon_flags may contain arguments with >> spaces >> ${rcexec} "${daemon} ${daemon_flags_1}" && \ >> ${rcexec} "${daemon} ${daemon_flags_1}" >> } >> >> rc_cmd $1 > >${rcexec} was deprecated in 7.2 and dropped in 7.3. You have to use >rc_exec now. > ># sed -i 's/\${rcexec}/rc_exec/' /etc/rc.d/autossh > >https://www.openbsd.org/faq/upgrade72.html#ConfigChanges >https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/etc/rc.d/rc.subr.diff?r1=1.159&r2=1.160&f=h
Thanks for that. Even after I modified to use rc_exec I'm still getting the same problem of not switching to daemon_user . Comments added inline: # rcctl -d start autossh doing _rc_parse_conf autossh_flags empty, using default >< doing rc_check autossh doing rc_start remoteuser ^^^^^^^^^^ daemon_user is correctly set to "remoteuser" doing _rc_wait_for_start doing rc_check root ^^^^^^^^^^^^ here is where we should see "remoteuser" and not root when ^^^^^^^^^^^^^ running "whoami" /etc/rc.d/autossh: /usr/local/bin/autossh -M 0 -f -N tun-remoteA: not found doing _rc_rm_runfile (failed) The modified rc script that yields this output is: #!/bin/ksh # start autossh tunnel # requires remoteuser user with $HOME/.ssh/config and keys daemon="/usr/local/bin/autossh" daemon_flags_1="-M 0 -f -N rev-tun-lax" daemon_flags_2="-M 0 -f -N rev-tun-ord" daemon_user="as2h" . /etc/rc.d/rc.subr rc_reload=NO pexp="autossh:.*" # Child will not return a config parsing error to the parent. rc_start() { # use rc_exec here since daemon_flags may contain arguments with spaces echo ${daemon_user} # prove the variable is set here ${rc_exec} "/usr/bin/whoami" # show who we are running commands as ${rc_exec} "${daemon} ${daemon_flags_1}" && \ ${rc_exec} "${daemon} ${daemon_flags_2}" } rc_cmd $1