Variável de ambiente interpolada não definida no cronjob usando o comando /bin/ip

Variável de ambiente interpolada não definida no cronjob usando o comando /bin/ip

Eu tenho o seguinte script no diretório inicial do meu usuário

#!/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 no crontab raiz)

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

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

> ./startup.sh
Using HOST_IP=192.168.1.15

Mas se eu reiniciar a máquina e depois inspecionar, restart.logvejo

> cat ./restart.log
Using HOST_IP=

Estou usando o caminho completo para os comandos ipe grep, então não entendo por que não estou obtendo nenhum valor para a variável de ambiente quando ela é executada a partir do crontab.

Responder1

Seu @rebootcron job é executadoantes que o endereço seja definido.

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

informação relacionada