Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Dec 2012 10:50:14 -0600
From:      Paul Schmehl <pschmehl_lists@tx.rr.com>
To:        freebsd-rc@freebsd.org
Subject:   rc.subr questions - continued
Message-ID:  <8A328288ADDF512269BB31D5@utd71538.campus.ad.utdallas.edu>
In-Reply-To: <CADLo838ty4_ryGLQo9h5Ze2oA0WXvX3Yc4vV9Ei9HjG0whLkfg@mail.gmail.com>
References:  <DC59D265988CEDF1F3DC5C6D@utd71538.campus.ad.utdallas.edu> <CADLo838ty4_ryGLQo9h5Ze2oA0WXvX3Yc4vV9Ei9HjG0whLkfg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Since I maintain three ports (security/sguil-server, security/sguil-sensor 
and security/sguil-client) that have this problem, I decided to start with 
the server port.  The current port version is 0.7.0 and the init script 
worked fine when I submitted the port a while ago.  Here it is:

. /etc/rc.subr

load_rc_config sguild
# set some defaults
sguild_enable=${sguild_enable:-"NO"}
sguild_conf=${sguild_conf:-"/%%PREFIX%%/etc/%%SGUILDIR%%/sguild.conf"}
pid=${pid:-"/var/run/%%SGUILDIR%%/sguild.pid"}
sguild_flags=${sguild_flags:-"-D -P ${pid}"}
sguild_user=${sguild_user:-"sguil"}

name="sguild"
rcvar=sguild_enable
command="%%PREFIX%%/bin/${name}"
command_args="-c ${sguild_conf} ${sguild_flags}"
procname="%%TCLSH%%"
check_process="${procname}"
sguild_user="sguil"

run_rc_command "$1"

The sguild program begins with these lines:

#!/bin/sh
# Run tcl from users PATH \
exec tclsh "$0" "$@"

Now I'm trying to update to version 0.8.0, and I cannot get the init script 
to work.  It's identical to the 0.7.0 version, and so is the beginning of 
the sguild program.  Yet when I try to start the program, I get this:

# /usr/local/etc/rc.d/sguild start
/usr/local/etc/rc.d/sguild: WARNING: no shebang line in 
/usr/local/bin/tclsh8.5
/usr/local/etc/rc.d/sguild: WARNING: no shebang line in 
/usr/local/bin/tclsh8.5
/usr/local/etc/rc.d/sguild: unknown directive '/usr/local/bin/sguild'.
Usage: /usr/local/etc/rc.d/sguild 
[fast|force|one|quiet](start|stop|restart|rcvar|status|poll)

When I look at /etc/rc.subr, I take the "unknown directive section to mean 
"I'm bailing out, because I have no clue what you want me to do."

I can start the daemon manually, and it works as expected:

# sh /usr/local/bin/sguild -c /usr/local/etc/sguild/sguild.conf -D -P 
/var/run/sguild/sguild.pid
2012-12-17 16:42:48 pid(77882)  Loading access list: 
/usr/local/etc/sguild/sguild.access
2012-12-17 16:42:48 pid(77882)  Sensor access list set to ALLOW ANY.
2012-12-17 16:42:48 pid(77882)  Client access list set to ALLOW ANY.

# ps -auxw | grep sguild
sguil   77884  0.0  0.1 28240  8524   0  I     4:42PM   0:00.02 
/usr/local/bin/tclsh8.5 /usr/local/bin/sguild -c 
/usr/local/etc/sguild/sguild.conf -D -P /var/run/sguild/sguild.pid
sguil   77888  0.0  0.1 28240  8392   0  S     4:42PM   0:00.00 
/usr/local/bin/tclsh8.5 /usr/local/bin/sguild -c 
/usr/local/etc/sguild/sguild.conf -D -P /var/run/sguild/sguild.pid
sguil   77889  0.0  0.1 28240  8396   0  I     4:42PM   0:00.00 
/usr/local/bin/tclsh8.5 /usr/local/bin/sguild -c 
/usr/local/etc/sguild/sguild.conf -D -P /var/run/sguild/sguild.pid

Both status and stop work fine:

# /usr/local/etc/rc.d/sguild status
sguild is running as pid 77884 77888 77889.
[root@buttercup4 /usr/ports/security/sguil-server]# 
/usr/local/etc/rc.d/sguild stop
Stopping sguild.
SGUILD: killing child procs...
SGUILD: Exiting...

# ps -auxw | grep sguild
root    77964  0.0  0.0  9128  1452   0  S+    4:45PM   0:00.00 grep sguild

This makes no sense to me.  What is start failing like this?  Did something 
change in the rc.subr script recently?  I don't see anything in 
/usr/ports/CHANGES for rc.subr since 2007.  I don't see anything at all 
about rc.subr in /usr/ports/UPDATING.

If I add a command_interpreter of /usr/local/bin/tclsh8.5, status and stop 
fail, claiming sguild isn't running.  (It is.)

This one has me stumped.

-- 
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8A328288ADDF512269BB31D5>