Ich habe einfache Bash-Skript, das Handbuch am Terminal, aber nach Cron gibt eine leere Variable.Bash leere Variable nach dem Ausführen von Cron, aber läuft manuell
#!/bin/bash
gwip=`/usr/bin/nmcli dev list iface eth0 | grep IP4-SETTINGS.GATEWAY: | awk '{ print $2}'`
printf '%s\n' "$(date) =- $gwip -= " >> /var/log/looog.log
Lauf: /bin/bash /test.bash
Ausgabe in Datei /var/log/looog.log:
1 monday 2016 14:17:36 +0300 =- 23.18.117.254 -=
Wenn ich durch cron, variabel ist leer.
*/1 * * * * root /bin/bash /test.bash
Ausgabe in Datei /var/log/looog.log:
1 monday 2016 14:19:13 +0300 =- -=
Warum variable $ gwip ist leer? wie man es repariert?
Ich habe einen Fehler in looog.err.log: ** (Prozess: 11885): WARNUNG **: nm_client_get_devices: Fehler beim Abrufen der Geräte: Keine Antwort erhalten. Mögliche Ursachen sind: Die Remoteanwendung hat keine Antwort gesendet, die Nachrichtenbus-Sicherheitsrichtlinie hat die Antwort blockiert, das Antwortzeitlimit ist abgelaufen oder die Netzwerkverbindung wurde unterbrochen. Fehler: Gerät 'eth0' nicht gefunden. –
Nun, da ist dein Fehler. Warum 'nmcli' nicht von Cron auf Ihrem System läuft, ist nicht wirklich eine großartige StackOverflow-Frage - es wird notwendigerweise eine faktenintensive Untersuchung sein - aber ich würde anfangen, zu prüfen, ob Sie SELinux aktiviert haben. Wenn Sie es auf den Modus "Permissive-but-logging" (Freigeben, aber nicht protokollieren) festlegen, können Sie so herausfinden, welche Berechtigungen benötigt, aber nicht verfügbar sind. –
... dieser Fehler macht es ziemlich klar, dass Bash so funktioniert, wie es sollte, sogar von Cron, und damit haben Sie kein Problem mit der Variablenerfassung, richtig? Gibt es hier noch weitere Teilbereiche des Problems? –