ip-adressen problem?

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
wese
Beiträge: 4
Registriert: 21.04.2017 12:58:20

ip-adressen problem?

Beitrag von wese » 01.08.2017 14:06:10

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

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: ip-adressen problem?

Beitrag von eggy » 01.08.2017 16:30:14

Evtl liegts daran, dass die Pfade nicht ausreichen, also /usr/bin/awk statt awk usw.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ip-adressen problem?

Beitrag von smutbert » 01.08.2017 17:20:08

wird die Ausgabe irgendwie umgeleitet?
sonst landet sie seit systemd einfach im Log glaube ich, zB

Code: Alles auswählen

# journalctl -p 7 -u rc-local.service

Benutzeravatar
Wolf2000
Beiträge: 52
Registriert: 08.07.2017 08:19:58
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: ip-adressen problem?

Beitrag von Wolf2000 » 01.08.2017 19:16:54

Du kannst auch anders ausgeben:

Code: Alles auswählen

hostname -I
großes I

TomL

Re: ip-adressen problem?

Beitrag von TomL » 01.08.2017 20:18:02

wese hat geschrieben: ↑ zum Beitrag ↑
01.08.2017 14:06:10
für etwas hilfe wäre ich sehr dankbar
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
Wenn die rc-local tatsächlich vor dem Netzwerk abgearbeitet wird, hast Du die Ursache des Problems. Ganz genau kannst Du es auch hier mit einem Picture-Viewer für diese Ausgabe sehen:

Code: Alles auswählen

systemd-analyze plot >~/bootplot.svg

wese
Beiträge: 4
Registriert: 21.04.2017 12:58:20

Re: ip-adressen problem?

Beitrag von wese » 02.08.2017 16:01:02

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

TomL

Re: ip-adressen problem?

Beitrag von TomL » 02.08.2017 22:30:19

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

Antworten