Ihr @reboot
Cron-Job wird ausgeführt, bevor die Adresse festgelegt ist.
Ein zuverlässigerer Ansatz wäre, das Skript über den "post-up" Hook-Mechanismus Ihres Netzwerkkonfigurators auszuführen, z /etc/NetworkManager/dispatcher.d
. B. über .
Ich habe das folgende Skript im Heimatverzeichnis von 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"
und den folgenden Eintrag in der crontab meines Benutzers (nicht die root crontab)
@reboot /home/myuser/startup.sh > /home/myuser/restart.log 2>&1
Wenn ich den Befehl selbst ausführe, sehe ich die folgende Ausgabe
> ./startup.sh Using HOST_IP=192.168.1.15
Aber wenn ich die Maschine neu starte und dann inspiziere, restart.log
sehe ich
> cat ./restart.log Using HOST_IP=
Ich verwende den vollständigen Pfad zu den Befehlen ip
und grep
, also verstehe ich nicht, warum ich für die Umgebungsvariable keinen Wert bekomme, wenn sie von der Crontab ausgeführt wird?
Ihr @reboot
Cron-Job wird ausgeführt, bevor die Adresse festgelegt ist.
Ein zuverlässigerer Ansatz wäre, das Skript über den "post-up" Hook-Mechanismus Ihres Netzwerkkonfigurators auszuführen, z /etc/NetworkManager/dispatcher.d
. B. über .