Redirecionamento de bash em scripts secundários (chamados / gerados)

0

Estou usando o apcupsd para responder a eventos em um no-break da APC. O daemon efetua respostas encadeando scripts BASH. Primeiro, chama apccontrol (acrescentando 4 argumentos) que, por sua vez, chama um script específico para o evento, como "onbattery". Os usuários só podem editar esses scripts de terceiro nível.

Eu editei meu script "onbattery" para criar mensagens modulares para envio por e-mail e difusão, e tudo funciona bem quando eu chamo o script "onbattery" diretamente & quando é chamado a partir do 2º nível apccontrol. No entanto, quando a cadeia começa a partir do daemon de nível superior, todos os comandos, como cat, echo e os redirecionamentos / anexos, parecem ser ignorados no script final "onbattery".

Eu entendo que ler o redirecionamento em shells / scripts gerados é um problema, mas não como contornar isso. Alguém pode ajudar por favor.

o script onbattery é o seguinte

#!/bin/bash
echo -e "From: Admin@somewhere \nSubject: Server on battery $(date +%D_%T) \n\n" > email.txt
cat OnBattWarn.txt >> email.txt
cat email.txt | ssmtp remoteadmin@somewherelse
wall | email.txt
exit99
    
por JAH1 10.04.2016 / 22:02

1 resposta

0

Obrigado pela sua consideração. Uma boa noite de sono revelou a resposta. O script funcionou bem como root, mas falhou como apcupsd - apontando para um problema de permissões (como Jeff sugere), mas na verdade o problema foi que o apcupsd criou o arquivo email.txt em / e não dentro do diretório originador / apcupsd. Sem o arquivo, os redirecionamentos & anexos etc falhou. A solução simples era usar caminhos absolutos - me mude! Eu poderia ter encontrado a resposta mais cedo se eu não tivesse usado versões do script com sucesso em outro lugar, daí minha análise mal concebida.

Eu tentei depurar com o set -x, mas é claro que o bash não estava falhando por si só, então não houve erros - apenas nenhum resultado. Enfim tudo corrigido agora, obrigado pelo seu tempo.

    
por 11.04.2016 / 17:20