Variable de entorno interpolada desarmada en cronjob usando el comando /bin/ip

Variable de entorno interpolada desarmada en cronjob usando el comando /bin/ip

Tengo el siguiente script en el directorio de inicio de mi usuario

#!/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"

y la siguiente entrada en el crontab de mi usuario (no en el crontab raíz)

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

Si ejecuto el comando yo mismo veo el siguiente resultado

> ./startup.sh
Using HOST_IP=192.168.1.15

Pero si reinicio la máquina y luego inspecciono restart.logveo

> cat ./restart.log
Using HOST_IP=

Estoy usando la ruta completa a los comandos ipy grep, así que no entiendo por qué no obtengo ningún valor para la variable de entorno cuando se ejecuta desde el crontab.

Respuesta1

Tu @reboottrabajo cron se ejecutaantes de establecer la dirección.

Un enfoque más confiable sería ejecutar el script desde el mecanismo de enlace "post-up" de su configurador de red, por ejemplo, a través de /etc/NetworkManager/dispatcher.d.

información relacionada