Ambiente interpolato Variabile disinserita in cronjob usando il comando / bin / ip


0

Ho il seguente script nella home directory di 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 la seguente voce nel crontab del mio utente (non nel crontab di root)

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

Se eseguo il comando da solo vedo il seguente output

> ./startup.sh
Using HOST_IP=192.168.1.15

Ma se riavvio la macchina e poi ispeziono restart.logvedo

> cat ./restart.log
Using HOST_IP=

Sto usando il percorso completo per i comandi ipe grep, quindi non capisco perché non ottengo alcun valore per la variabile di ambiente quando viene eseguita dal crontab?

Risposte:


2

Il tuo @rebootcron job viene eseguito prima di impostare l'indirizzo.

Un approccio più affidabile sarebbe quello di eseguire lo script dal meccanismo di aggancio "post-up" del configuratore di rete, ad esempio tramite /etc/NetworkManager/dispatcher.d.


Ho finito per creare un file di unità di sistema per l'esecuzione del mio script e ha funzionato perfettamente. Grazie.
Matt Phillips,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.