Variável de Ambiente Interpolada não configurada no cronjob usando o comando / bin / ip

0

Eu tenho o seguinte script no diretório pessoal do myuser

#!/bin/bash
# startup.sh
export HOST_IP=$(/bin/ip -4 addr show enp2s0 | /bin/grep -Po 'inet \K[\d.]+')
echo "Using HOST_IP=$HOST_IP"

e a seguinte entrada no crontab do meu usuário (não o crontab raiz)

@reboot /home/myuser/startup.sh > /home/myuser/restart.log 2>&1

Se eu executar o comando eu vejo a seguinte saída

> ./startup.sh
Using HOST_IP=192.168.1.15

Mas se eu reiniciar a máquina e, em seguida, inspecionar restart.log , eu vejo

> cat ./restart.log
Using HOST_IP=

Estou usando o caminho completo para os comandos ip e grep , então não entendo por que não estou tendo nenhum valor para a variável de ambiente quando é executado a partir do crontab?

    
por Matt Phillips 04.01.2018 / 18:17

1 resposta

1

Sua tarefa @reboot cron é executada antes de o endereço ser definido.

Uma abordagem mais confiável seria executar o script a partir do mecanismo de gancho "post-up" do configurador de rede, por exemplo, via /etc/NetworkManager/dispatcher.d .

    
por 04.01.2018 / 18:31