Two issues
1. Currently the freebsd rc.d script to start the agent has the config file hardwired in. This is not ideal as when you are managing a heterogeneous enviroment you have to remember where the config file its stored on that particular OS. It would be nice to have a fixed location common to all unix OS's. eg /opt/zabbix/etc/agentd.conf or similar. There is no way to do this on freebsd without hacking the startup script. Linux you can through /etc/sysconfig
2. There is no ability to run a pre script before the agent is started. On RHEL linux you can do this easily with the /etc/sysconfig stuff. It is useful to be able to this as you can standardize the format of things like hostname or programatically determine things like bind interfaces. Therefore please considers the following replacement to the freebsd rc.d script.
Default operation shouldn't be altered. However if you define
#!/bin/sh
# PROVIDE: zabbix_agentd
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
# enable zabbix_agentd:
#
# zabbix_agentd_enable (bool): Set to NO by default. Set it to YES to
# enable zabbix_agentd.
#
. /etc/rc.subr
name="zabbix_agentd"
rcvar=zabbix_agentd_enable
start_precmd="zabbix_precmd"
required_files="/usr/local/etc/zabbix24/zabbix_agentd.conf"
# read configuration and set defaultsc
load_rc_config "$name"
: ${zabbix_agentd_enable="NO"}
#: ${zabbix_agentd_pre:=/usr/local/etc/zabbix24/${name}.pre.sh}
if [ ! -z "$zabbix_agentd_conf" ] ; then
zabbix_agentd_flags="${zabbix_agentd_flags} -c ${zabbix_agentd_conf}"
required_files=${zabbix_agentd_conf}
fi
zabbix_precmd()
{
if [ ! -z "$zabbix_agentd_pre" ] ; then
if [ -e $zabbix_agentd_pre ] ; then
. $zabbix_agentd_pre
fi
fi
}
command="/usr/local/sbin/${name}"
run_rc_command "$1"
here is the diff
# diff zabbix_agentd zabbix_agentd.old
13a14
>
17a19,20
> start_precmd="zabbix_precmd"
> required_files="/usr/local/etc/zabbix24/zabbix_agentd.conf"
19,22d21
< command="/usr/local/sbin/${name}"
< required_files="/usr/local/etc/zabbix24/${name}.conf"
<
< load_rc_config $name
23a23,24
> # read configuration and set defaultsc
> load_rc_config "$name"
24a26,46
> #: ${zabbix_agentd_pre:=/usr/local/etc/zabbix24/${name}.pre.sh}
>
>
> if [ ! -z "$zabbix_agentd_conf" ] ; then
> zabbix_agentd_flags="${zabbix_agentd_flags} -c ${zabbix_agentd_conf}"
> required_files=${zabbix_agentd_conf}
> fi
>
> zabbix_precmd()
> {
> if [ ! -z "$zabbix_agentd_pre" ] ; then
> if [ -e $zabbix_agentd_pre ] ; then
> . $zabbix_agentd_pre
> fi
> fi
>
> }
>
>
> command="/usr/local/sbin/${name}"
>
26a49
>