ip-adressen problem?
ip-adressen problem?
Hallo
Ich verwende ein RaspberryPi2 und sende
über ein Pythonscript per "subprocess" den Befehl
[ ifconfig eth0 | awk "/inet /" | cut -d":" -f 2 | cut -d" " -f1 ],
das Script wird hierbei über "/etc/rc.local" beim booten aufgerufen und sollte
dann die aktuelle ip-adresse ausgeben. Hier kommt nun jedoch nichts zurück, führe ich das
Programm aber nach dem Bootvorgang von Hand aus gibt es die korrekte ip-adresse aus.
für etwas hilfe wäre ich sehr dankbar
mfG wese
Ich verwende ein RaspberryPi2 und sende
über ein Pythonscript per "subprocess" den Befehl
[ ifconfig eth0 | awk "/inet /" | cut -d":" -f 2 | cut -d" " -f1 ],
das Script wird hierbei über "/etc/rc.local" beim booten aufgerufen und sollte
dann die aktuelle ip-adresse ausgeben. Hier kommt nun jedoch nichts zurück, führe ich das
Programm aber nach dem Bootvorgang von Hand aus gibt es die korrekte ip-adresse aus.
für etwas hilfe wäre ich sehr dankbar
mfG wese
Re: ip-adressen problem?
Evtl liegts daran, dass die Pfade nicht ausreichen, also /usr/bin/awk statt awk usw.
Re: ip-adressen problem?
wird die Ausgabe irgendwie umgeleitet?
sonst landet sie seit systemd einfach im Log glaube ich, zB
sonst landet sie seit systemd einfach im Log glaube ich, zB
Code: Alles auswählen
# journalctl -p 7 -u rc-local.service
- Wolf2000
- Beiträge: 52
- Registriert: 08.07.2017 08:19:58
- Lizenz eigener Beiträge: MIT Lizenz
-
Kontaktdaten:
Re: ip-adressen problem?
Du kannst auch anders ausgeben:
großes I
Code: Alles auswählen
hostname -I
Re: ip-adressen problem?
Das deutet m..E. darauf hin, dass das Netzwerk noch nicht fertig verbunden ist, wenn die rc.local abgearbeitet wird. Das heisst, die rc.local soll was machen, was sie zu dem Zeitpunkt gar nicht erfolgreich machen kann.
Schau mal nach, ob Du am Timestamp erkennenn kannst, wann rc.local und Netzwerk abgearbeitet werden:
Code: Alles auswählen
journalctl -b | grep rc.local
journalctl -b | grep network -i | grep dhcp -i
oder nur
journalctl -b | grep network -i
Code: Alles auswählen
systemd-analyze plot >~/bootplot.svg
Re: ip-adressen problem?
Hallo,
Ich hatte tatsächlich wie hier angenommen wurde in den Bootoptionen "Wait for Network at Boot" abgeschaltet,
wodurch das Netzwerk dann noch nicht fertig verbunden war. Wenn ich dies wieder aktiviere wird die
IP-Adresse dann auch zurückgeben. Nun gibt es aber noch ein kleines Problem, wenn das Netzwerkkabel nicht
angeschlossen wird dauert es sehr lange bis das eigentliche Programm ausgeführt wird.
Nun wäre die Frage ob es möglich wäre diesen Netzwerk-Timeout auf einen annehmbaren Wert einzustellen.
mfG
wese
Ich hatte tatsächlich wie hier angenommen wurde in den Bootoptionen "Wait for Network at Boot" abgeschaltet,
wodurch das Netzwerk dann noch nicht fertig verbunden war. Wenn ich dies wieder aktiviere wird die
IP-Adresse dann auch zurückgeben. Nun gibt es aber noch ein kleines Problem, wenn das Netzwerkkabel nicht
angeschlossen wird dauert es sehr lange bis das eigentliche Programm ausgeführt wird.
Nun wäre die Frage ob es möglich wäre diesen Netzwerk-Timeout auf einen annehmbaren Wert einzustellen.
mfG
wese
Re: ip-adressen problem?
Ich halte die rc.local für solche Zwecke sowieso für die schlechteste Wahl. Ich gehe sogar noch einen Schriitt weiter, in dem ich einfach mal assoziiere: "rc.local" bedeutet nicht "rc.network". Der bessere Weg wäre, hier systemd-Service-Units zu nutzen. Aber egal, als Quick&Dirty-Lösung könnte das hier funktionieren. Füge das einfach in die rc.local ein, vor Deiner Abfrage... damit wird max 60 Sekunden aufs Netzwerk gewartet. Du musst nur die IP 192.168.1.2 ersetzen, durch die Deines Routers. Danach kannst Du auch wieder die Bootoptionen zurücksetzen und diese Blockade verhindern. Diese Wait-Schleife blockiert den Boot-Vorgang nicht.
Code: Alles auswählen
IsConnect=-1
Start=$(date +%s)
End=0
Diff=0
while [ true ]; do
/bin/ping -c1 -W1 -q 192.168.1.2 &>/dev/null
IsConnect=$?
[ $IsConnect -eq 0 ] && break
/bin/sleep 0.5
End=$(date +%s);
Diff=$((End-Start))
[[ Diff -gt 60 ]] && break
done