ifdown no script do cron bash falha ao executar

2

Eu tenho um script que é executado quando um servidor (Ubuntu 14.04) é inicializado usando @reboot no crontab (sob o usuário root)

@reboot /bin/bash /root/init.sh >> /var/logs/vminit.log

O script executa várias coisas, mas quando atinge essa linha

ifdown eth1

O script é encerrado e ifdown não é executado. (A execução de ifconfig ainda mostra eth1 na saída) Ativar o modo Verbose em ifdown também não retorna.

Se eu mesmo executar manualmente o script, ele será executado conforme o esperado.

Eu escrevi um script de teste apenas para descartar problemas com init.sh

#!/bin/bash
echo 'one'
ifdown eth1
echo 'two'

Se eu executar manualmente, recebo esta saída (o que é esperado)

one
<DHCP Client info>
two

Se eu colocar este script de teste no crontab para ser executado com @reboot , obtenho os mesmos resultados que init.sh e a saída é

one

Eu testei executando o cron em um momento exato (Exemplo: 25 14 * * * ) para ver se é algo com '@reboot', mas sem sorte.

Eu também tentei atrasar a execução do script após a inicialização, caso algo estivesse bloqueando ifdown da execução

@reboot /bin/sleep 60; /bin/bash /root/init.sh >> /var/log/vminit.log

Algumas notas: - Eth1 é uma interface ativa, antes de executar ifdown o script faz uma chamada de eth1 para pegar um arquivo com sucesso. - O script é executado como root - Permissões com o script (e log) estão bem. - Executar init.sh ou o script de teste é executado manualmente conforme o esperado.

    
por adamstrawson 30.04.2015 / 15:56

1 resposta

3

Realmente não sei porque ifdown não funciona com o crontab.

De qualquer forma, enfrentei a mesma situação há muito tempo e tenho uma solução alternativa. Espero que isso ajude você.

Substituir

ifdown eth1

com

/sbin/ifconfig eth1 down 1> /dev/null

Isso funcionou para mim.

    
por Maythux 30.04.2015 / 18:07