O script iniciado pelo daemon não pode encontrar a biblioteca compartilhada

1

Estou estendendo o snmpd com a diretiva extend para chamar alguns scripts para alguns OIDs. O próprio script chama um programa auxiliar personalizado que extrai algum valor. O auxiliar é executado corretamente quando é iniciado manualmente a partir da linha de comando, mas quando eu o chamo no script, ele não funciona porque ele não consegue localizar nossas dependências personalizadas em /cots/boost-1.55/lib . Eu adicionei /cots/boost-1.55/lib a /etc/ld.conf.d/cots.conf e depois de executar ldconfig verifiquei que as bibliotecas de reforço estão no cache. O script basicamente contém

result='callHelper with arguments'
echo $result

e o resultado é capturado pelo snmpd e retornado. Quando eu consultar o OID, recebo um erro que não consegue encontrar a biblioteca de reforço externa.

Consegui fazer isso funcionar chamando su user no script

result='su user "callHelper with arguments"'
echo $result

Alguém pode explicar por que o cache ld está correto ao usar su , mas não quando o script do programa diretamente? Eu acho que tem algo a ver com o fato de que snmpd é um serviço do sistema e, portanto, o ambiente é diferente, mas ldconfig não faz parte do ambiente.

    
por Jens 13.09.2016 / 16:41

1 resposta

0

Você verificou se sua biblioteca está em sua pesquisa PATH. Execute o seguinte em TERM para verificar seu PATH global. O caminho é configurado usando .profile não config.

echo $PATH$ 

para ver seu caminho de pesquisa. Para adicionar explicitamente sua biblioteca ao seu caminho de busca, use o comando "set" em Term. O cifrão indica que é uma chamada global para o shell. Experimente

set PATH=$PATH$;/cots/boost-1.55/lib

O ponto-e-vírgula diz ao shell para iniciar um novo caminho de pesquisa. No entanto, isso só funciona se o caminho de pesquisa existir. Claro que se bifurca na minha máquina como com

set PATH=$PATH$;/cots/boost-1.55/lib
bash: /cots/boost-1.55/lib: -forks No such file or direc

tory!

    
por 12.10.2017 / 09:36