Can't get start_precmd to do *anything*

Chris Rees utisoft at gmail.com
Wed Dec 19 22:48:04 UTC 2012


On 19/12/2012, Paul Schmehl <pschmehl_lists at tx.rr.com> wrote:
> I'm working on an rc.d init script for a port, and I am clearly in need of
> a clue.
>
> I have a daemon that requires that a FIFO exist before it will start.  The
> FIFO is defined in the daemon's conf file.  I could just point that out to
> the user using "warn", but I thought it would be nicer to simply take care
> of it programmatically.
>
> So I created this:
>
> start_precmd="${name}_ck4fifo()"

Is this a copy/paste error, or is your function actually called
_ck4fifo or _ch4fifo?

> ${name}_ch4fifo()

I'm surprised sh isn't choking on this, you can't use ${name} in a
function name.  Indirecting it is a waste of processing time, if I'm
honest; just use

start_precmd=pads_agent_prestart

pads_agent_prestart()
{
     do_something
}

We always have search and replace in case you choose to modify $name :)

Chris

> {
>       . ${pads_agent_conf}
>       echo "Checking to see if ${PADS_FIFO} exists......"
>       if [ ! -p ${PADS_FIFO} ]; then
>             echo "${PADS_FIFO} did not exist.  Creating it now....."
>             `/usr/bin/mkfifo ${PADS_FIFO}
>       else
>             echo "${PADS_FIFO} already exists."
>       fi
> }
>
> When I run the init script with rc_debug enabled, it calls the
> start_precmd, but absolutely nothing happens.  I don't even get the echos.
>
> # /usr/local/etc/rc.d/pads_agent onestart
> /usr/local/etc/rc.d/pads_agent: DEBUG: checkyesno: pads_agent_enable is set
>
> to YES.
> /usr/local/etc/rc.d/pads_agent: DEBUG: run_rc_command: start_precmd:
> pads_agent_ck4fifo()
> Starting pads_agent.
> /usr/local/etc/rc.d/pads_agent: DEBUG: run_rc_command: doit:
> /usr/local/bin/sguil-sensor/pads_agent.tcl -D -c
> /usr/local/etc/sguil-sensor/pads_agent.conf
> [root at buttercup4 /usr/ports/security/sguil-sensor-update/sguil-sensor]#
> Error: Unable to read
> /var/data/nsm/sguil-sensor/buttercup4.utdallas.edu/pads.fifo
>
> I even tried this but got the same result.
>
> ${name}_ch4fifo()
> {
>         warn "You must create PADS_FIFO before starting ${name}."
>         warn "Set PADS_FIFO in the ${pads_agent_conf} file."
> }
>
> The warn messages aren't in the messages file either, which is expected
> behavior.
>
> What the heck is going on here?  Is something wrong with rc.subr on this
> host?  Am I missing something?
>
> --
> 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
>
> _______________________________________________
> freebsd-rc at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-rc
> To unsubscribe, send any mail to "freebsd-rc-unsubscribe at freebsd.org"
>
>


-- 
Chris Rees          | FreeBSD Developer
crees at FreeBSD.org   | http://people.freebsd.org/~crees


More information about the freebsd-rc mailing list