rc.subr questions

Paul Schmehl pschmehl_lists at tx.rr.com
Thu Dec 6 21:50:34 UTC 2012


--On December 6, 2012 9:30:04 PM +0000 Chris Rees <crees at FreeBSD.org> wrote:

> On 6 December 2012 21:10, Paul Schmehl <pschmehl_lists at tx.rr.com> wrote:
>> --On December 6, 2012 8:45:50 PM +0000 Chris Rees <crees at FreeBSD.org>
>> wrote:
>>
>>> [CC rc@]
>>>
>>> On 6 December 2012 20:36, Paul Schmehl <pschmehl_lists at tx.rr.com> wrote:
>>>>
>>>> I'm trying to figure out how to get an rc.subr script to start and
>>>> stop a script.
>>>>
>>>> This works from the commandline (to start it):
>>>> tclsh /usr/local/bin/dir/script -D -c /usr/local/etc/conffile
>>>>
>>>> I've tried various combinations of:
>>>>
>>>> command_interpreter
>>>> argument_precmd
>>>> command_args
>>>>
>>>> but I keep getting this error:
>>>> unknown directive '/usr/local/bin/sguil-sensor/pads_agent.tcl'
>>>>
>>>> Doesn't matter if I make that string the val for command and don't use
>>>> command_interpreter or do use command_interpreter.
>>>>
>>>> I've read the man page over and over, but I'm clueless as to how to use
>>>> run_rc_script, which I *think* is the right way to call this script.
>>>>
>>>
>>> Make the script executable
>>
>>
>> It is.
>>
>>
>> , put a shebang in; #!/usr/bin/env tclsh
>>
>> Here's the current script's starting lines:
>>
>> # !/bin/sh
>> # Run tcl from users PATH \
>> exec tclsh "$0" "$@"
>>>
>>>
>>> # !/bin/sh
>>>
>>>
>>> . /etc/rc.subr
>>>
>>> name=tclshexample
>>> rcvar=tclshexample_enable
>>>
>>> load_rc_config $name
>>>
>>> : ${tclshexample_enable=YES}
>>>
>>> command="/usr/local/bin/dir/script"
>>> command_interpreter=tclsh
>>> command_args="-D -c /usr/local/etc/conffile"
>>>
>>> run_rc_command $@
>>>
>>> http://www.bayofrum.net/~crees/scratch/tclshexample
>>>
>>> Would be much easier if you were to provide specifics or the actual
>>> script :)
>>>
>>> Chris
>>>
>>
>> Here's the rc script I'm working on.
>>
>> . /etc/rc.subr
>>
>> load_rc_config pads_agent
>>
>> # set defaults
>> pads_agent_enable=${pads_agent_enable:-"NO"}
>> pads_agent_conf=${pads_agent_conf:-"/usr/local/etc/sguil-sensor/pads_age
>> nt.conf"} pads_agent_flags="${pads_agent_flags}:-"-D -c
>> ${pads_agent_conf}"
>>
>> name="pads_agent"
>> rcvar=pads_agent_enable
>>
>> command="/usr/local/bin/sguil-sensor/pads_agent.tcl"
>> command_interpreter="tclsh"
>> command_args=${pads_agent_flags}
>>
>> run_rc_command "$@"
>>
>> Here's the error I'm getting when I run start:
>>
>> /usr/local/etc/rc.d/pads_agent: WARNING: $command_interpreter tclsh !=
>> /bin/sh
>> Starting pads_agent.
>> /usr/local/etc/rc.d/pads_agent: WARNING: $command_interpreter tclsh !=
>> /bin/sh
>> /usr/local/etc/rc.d/pads_agent: unknown directive
>> '/usr/local/bin/sguil-sensor/pads_agent.tcl'.
>> Usage: /usr/local/etc/rc.d/pads_agent
>> [fast|force|one|quiet](start|stop|restart|rcvar|status|poll)
>> /usr/local/etc/rc.d/pads_agent: WARNING: failed to start pads_agent
>>
>> I tried changing the interpreter to "/bin/sh" but I got the same error.
>>
>> Here's the perms on the script:
>>
>> # ls -lsa /usr/local/bin/sguil-sensor/pads_agent.tcl
>> 12 -r-xr-xr-x  1 root  wheel  11662 Dec  6 18:31
>> /usr/local/bin/sguil-sensor/pads_agent.tcl
>
> The problem is I think that the idiomatic tclsh syntax is to use the
># !/bin/sh shebang followed by some compat stuff... which doesn't play
> nicely with rc's idea of how scripts should look.
>
> If instead we use procname, that should work better.
>
> http://www.bayofrum.net/~crees/scratch/tclshexample2
>
> Does your tclsh script daemonise?

It's supposed to, but it fails.  Let's cease this discussion for now while 
I do some troubleshooting.  I think I have bigger problems than just the 
rc.subr stuff, and I don't want to waste any more of your time.

-- 
Paul Schmehl, Senior Infosec Analyst
As if it wasn't already obvious, my opinions
are my own and not those of my employer.
*******************************************
"It is as useless to argue with those who have
renounced the use of reason as to administer
medication to the dead." Thomas Jefferson
"There are some ideas so wrong that only a very
intelligent person could believe in them." George Orwell



More information about the freebsd-ports mailing list