Como ler o status do serviço em um script bash

0

Eu escrevi um script para monitorar um serviço específico no meu VPS. Esse serviço (clamd.amavisd) tende a ser encontrado inesperadamente morto e quando isso acontece, meu serviço de e-mail é essencialmente interrompido.

Eu uso as seguintes instruções no script:

STATUS_QUERY_RESULT_STRING=$(service $SERVICE_NAME status)

O problema é que, quando executado a partir do terminal, o script recebe algo nessa variável (ecoei em um arquivo para que eu saiba), mas infelizmente para mim, quando executado em um cron job, a variável está vazia .

É óbvio que estou fazendo algo errado. Existe algum fator que não estou levando em conta?

    
por AbVog 03.01.2017 / 04:06

1 resposta

1

ABSOLUTELY tudo o que você está executando de cron deve ter caminhos absolutos porque cron usando uma parte mínima das variáveis de ambiente

   STATUS_QUERY_RESULT_STRING=$(/full/path/to/service $SERVICE_NAME status)

Você pode realmente definir em seu script os PATHs mais importantes de que precisa,

   PATH=/bin:/usr/local/sbin 

mas se você não quiser um dia descobrir que, por exemplo, ls esperada é, na verdade, uma queda de hacker malicioso, use sempre caminhos absolutos

Atribua no início do seu script que você deseja usar algo assim

   CAT='/bin/cat'
   LS='/bin/ls'

e use-o como

  $LS -la /some/path
  $CAT /etc/passwd
    
por 03.01.2017 / 07:16