Starten Sie das init-Skript nur, wenn die Netzwerkschnittstelle aktiv ist

3071
RobS

Ich habe einen Headless Media Server mit mpd, der auf gentoo läuft. Mpd ist so konfiguriert, dass es beim Booten gestartet wird (und ich habe auch keine parallel laufenden rc-Skripts), aber leider startet mpd nicht, wenn es nicht an eine Schnittstelle gebunden werden kann. Ich habe versucht, meinem WLAN eine statische IP-Adresse zu geben, aber gelegentlich wird mpd nicht gestartet, da die WLAN-Karte nicht mit dem Zugangspunkt verbunden ist (ich verwende wpa_supplicant).

Jetzt, wenn ssh startet, ist es sehr glücklich zu warten, bis die Schnittstelle erscheint. Aber selbst mit ein wenig Graben kann ich nicht recht herausfinden, wie das geht.

Mein schrecklicher Hack wäre für das mpd-Skript, nur um auf "ausreichend" Zeit zu warten, damit die Wlan-Karte zugeordnet werden kann, aber das funktioniert nicht unter allen Umständen.

Hat jemand irgendwelche Hinweise?

NB: Verwandte Fragen, die meine Frage nicht beantworten (aber für andere nützlich sein könnten, finden Sie hier):

Führen Sie ein Skript aus, wenn eine Verbindung zu einem drahtlosen Netzwerk in Linux besteht, und starten Sie ein Skype-Startprogramm oder ein anderes Programm, wenn es sich im Online-Modus befindet

1

4 Antworten auf die Frage

2
qedi

In gentoo-Startskripten (/etc/init.d/mpd in Ihrem Beispiel) sollte es ein

 depend() { ... } 

Abschnitt oben. So bestimmt init die Reihenfolge für den Start. Sie sollten eine Anforderung an das Netzwerk stellen, bevor Sie mpd dort starten. Ich denke die Linie ist

 need net 

Sehen Sie nach, was im abhängigen Abschnitt in /etc/init.d/sshd enthalten ist. Die gleiche Zeile sollte wahrscheinlich funktionieren, wenn Sie sie dem mpd-Startskript hinzufügen.

1
geek

Ein allgemeiner Ansatz wäre, mpd in einer Schleife zu starten, bis es erfolgreich gestartet wird. Ich glaube, dass mpd normalerweise einen bestimmten Exit-Code auslöst (den Sie in Ihrem Startskript einfangen können), wenn es aus bestimmten Gründen nicht gestartet werden konnte.

0
Andy

Von /etc/wpa_supplicant/ifupdown.sh:

# This file is executed by ifupdown in pre-up, post-up, pre-down and # post-down phases of network interface configuration. It allows # ifup(8), and ifdown(8) to manage wpa_supplicant(8) and wpa_cli(8) # processes running in daemon mode. 

Um die Zeile 144 (auf meiner Kopie) des Skripts scheint es die Post-Up-Operationen auszuführen - Sie sollten in der Lage sein, Ihren Launch-mpd hier abzulegen, es sei denn, jemand kann sich einen besseren Ort vorstellen.

Ich werde sehen, ob eine solche Datei in meiner Installation vorhanden ist. Vielen Dank. RobS vor 14 Jahren 0
Leider keine solche Datei in gentoo. RobS vor 14 Jahren 0
0
Dennis Williamson

Eine der Antworten in dem ersten Link, den Sie gegeben haben, schlägt vor, ein Skript zu setzen, in /etc/network/if-up.ddas ich Ihnen vorschlagen würde. Hast du das probiert?

In meinem Gentoo gibt es kein / etc / network RobS vor 14 Jahren 0