Ajuda com script de inicialização de daemon.

1. Ajuda com script de inicialização de daemon.

Joao Vitorino
Joao_Vitorino

(usa Red Hat)

Enviado em 01/06/2015 - 17:23h

Boa tarde a todos.

Onde trabalho, possuimos um padrão: Se o software é compilado, todos os seus arquivos de configuração tem que ficar em /etc/[nome_programa]/.

O problema é que tenho um software (agente do zabbix) que não estou conseguindo fazer com que seu daemon carregue os arquivos da pasta correta (/etc/zabbix/)

Vi no script próprio para o serviço do zabbix que ele usa o startproc (é uma distro openSuse - também não gosto mas é o que temos kkk).

O zabbix agent é executado assim.


/usr/local/sbin/zabbix_agentd

Se nada for expecifica, ele carrega o arquivo de configuração direto da pasta padrão (/usr/local/etc)
Para carregar da pasta onde quero, a linha de comando fica assim:
/usr/local/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf 


Ou seja, no script eu teria que colocar algo assim para inicializar como serviço
startproc -u zabbix /usr/local/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf 


O problema é que o paramentro "-c" acaba sendo reconhecido como um parametro do comando startproc e não do comando /usr/local/sbin/zabbix_agentd.

Alguém sabe como resolver isso? Propus um simples link simbolico entre /etc/zabbix/zabbix_agentd.conf e /usr/local/etc mas o pessoal da segurança encrencou. Abaixo o script do serviço do zabbix.



. /etc/rc.status
rc_reset
NAME="zabbix_agentd"
X_BIN="/usr/local/sbin/zabbix_agentd -c $ZABBIX_CONF"
ZABBIX_PID="/tmp/zabbix_agentd.pid"

if [ ! -x ${ZABBIX_BIN} ] ; then
echo -n "${ZABBIX_BIN} not installed! "
# Tell the user this has skipped
rc_status -s
exit 5
fi

export PATH=$PATH:/usr/local/sbin

case "$1" in
start)
echo -n "Starting ${NAME} "
checkproc -p ${ZABBIX_PID} ${ZABBIX_BIN}
case $? in
0) echo -n "- Warning: ${NAME} already running! " ;;
1) echo -n "- Warning: ${ZABBIX_PID} exists! " ;;
esac

startproc -p ${ZABBIX_PID} -u zabbix ${ZABBIX_BIN}
rc_status -v
;;
stop)
echo -n "Shutting down ${NAME}"
checkproc -p ${ZABBIX_PID} ${ZABBIX_BIN} || echo -n "- Warning: ${NAME} not running! "
killproc -p ${ZABBIX_PID} -TERM ${ZABBIX_BIN}
rc_status -v
;;
restart)
$0 stop
sleep 10
$0 start
rc_status
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
rc_exit










  


2. Re: Ajuda com script de inicialização de daemon.

Paulo
paulo1205

(usa Ubuntu)

Enviado em 01/06/2015 - 20:22h

Joao_Vitorino escreveu:

Ou seja, no script eu teria que colocar algo assim para inicializar como serviço
startproc -u zabbix /usr/local/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf 


O problema é que o paramentro "-c" acaba sendo reconhecido como um parametro do comando startproc e não do comando /usr/local/sbin/zabbix_agentd.


Muitos comandos usam o marcador “--” para indicar o fim da lista dos seus próprios argumentos, para que se possa passar argumentos para um subcomando. Não sei se se aplica ao seu caso.

Alguém sabe como resolver isso? Propus um simples link simbolico entre /etc/zabbix/zabbix_agentd.conf e /usr/local/etc mas o pessoal da segurança encrencou.


E que tal um wrapper para chamar o zabbix_agentd com o arquivo de configuração desejado.

#!/bin/bash
# zabbix_agentd.sh -- wrapper para o zabbix_agentd
# $1 deve conter o arquivo de configuração.
if (( $# != 1)); then
echo "Modo de uso: $0 arq_config" >&2
exit 1
fi
exec /usr/local/sbin/zabbix_agentd -c "$1"
echo "$0: falha ao executar zabbix_agentd." >&2
exit 1



3. Re: Ajuda com script de inicialização de daemon.

Joao Vitorino
Joao_Vitorino

(usa Red Hat)

Enviado em 03/06/2015 - 11:00h

paulo1205 escreveu:

Muitos comandos usam o marcador “--” para indicar o fim da lista dos seus próprios argumentos, para que se possa passar argumentos para um subcomando. Não sei se se aplica ao seu caso.


Alguém sabe como resolver isso? Propus um simples link simbolico entre /etc/zabbix/zabbix_agentd.conf e /usr/local/etc mas o pessoal da segurança encrencou.


E que tal um wrapper para chamar o zabbix_agentd com o arquivo de configuração desejado.

#!/bin/bash
# zabbix_agentd.sh -- wrapper para o zabbix_agentd
# $1 deve conter o arquivo de configuração.
if (( $# != 1)); then
echo "Modo de uso: $0 arq_config" >&2
exit 1
fi
exec /usr/local/sbin/zabbix_agentd -c "$1"
echo "$0: falha ao executar zabbix_agentd." >&2
exit 1
[/quote]


Esse funcionou Paulo obrigado.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts