Wie erkennt man den physikalischen Zustand eines Netzwerkkabels / Connectors?
In einer Linux-Umgebung, die ich brauche, um zu erkennen, das körperliche verbunden oder getrennt, Zustand der RJ45-Stecker für die Steckdose. Vorzugsweise unter Verwendung von BASH-scripting nur.
Folgende Lösungen, die vorgeschlagen wurden, auf anderen Seiten funktionieren NICHT für diesen Zweck:
- Mit 'ifconfig' - da ein Netzwerk-Kabel angeschlossen werden kann, aber das Netzwerk nicht richtig konfiguriert oder nicht aktuell.
- Ping an einen host - da wird das Produkt in einem LAN mit einem unbekannten Netzwerk-Konfiguration und unbekannte hosts.
Gibt es nicht ein Staat, der verwendet werden kann, in das /proc-Dateisystem (alles andere ist drin)?
Wie ist die Linux-Welt angenommen zu haben Ihre eigene version von der Windows-Blase, die pop-up aus der Taskleiste anzeigt, dass Sie gerade unplugged Netzwerk-Kabel?
Kent Fredric und lothardie beide Ihre Antworten, befriedigen mein Bedürfnis... vielen Dank! Die eine, die ich verwenden werde... weiß ich noch nicht.
Ich denke, ich kann nicht setzen Sie sowohl nach unten als die richtige Antwort? Und es ist wahrscheinlich fair für Euch, die ich tun wählen. Flip eine Münze, die ich denke? Wieder, vielen Dank!
InformationsquelleAutor der Frage Jeach | 2009-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie betrachten möchten, die Knoten in
Experimentierte ich mit mir:
Draht Angeschlossen:
Draht Entfernt:
Draht Wieder Eingesteckt:
Seite Trick: Ernte alle Eigenschaften auf einmal auf die einfache Weise:
Dadurch entsteht eine nette Liste von
key:value
Paare.InformationsquelleAutor der Antwort Kent Fredric
Können Sie ethtool:
Nur den Link-status können Sie mit grep:
InformationsquelleAutor der Antwort lothar
Verwenden Sie 'ip-monitor' zu erhalten ECHTZEIT-link-Status-änderungen.
InformationsquelleAutor der Antwort Peter Quiring
cat /sys/class/net/ethX
ist bei weitem die einfachste Methode.Muss die Oberfläche sein, die sich aber, sonst bekommen Sie ein ungültiges argument-Fehler.
Also erstmal:
Dann:
InformationsquelleAutor der Antwort Marco
Auf dem niedrigen Niveau, diese events können abgefangen werden, mit rtnetlink Steckdosen, ohne polling. Seite Hinweis: wenn Sie rtnetlink, Sie müssen gemeinsam mit udev, oder das Programm bekommen kann verwirrt, wenn udev benennt eine neue Netzwerk-Schnittstelle.
Das problem mit dem tun zu Netzwerk-Konfigurationen, die mit shell-Skripten ist, dass shell-Skripte sind schrecklich für event-handling (wie ein Netzwerk-Kabel angeschlossen und wieder entfernt). Wenn Sie etwas brauchen mehr leistungsfähige, werfen Sie einen Blick auf meine NCD Programmierspracheeine Programmiersprache, konzipiert für Netzwerk-Konfigurationen.
Beispielsweise eine einfache NCD Skript drucken "Kabel-in" und "cable out" auf stdout (vorausgesetzt, die Schnittstelle ist bereits eingerichtet):
(intern
net.backend.waitlink()
verwendet rtnetlink, undnet.backend.waitdevice()
verwendet udev)Die Idee der NCD ist, dass es ausschließlich um das Netzwerk zu konfigurieren, so normal -, Konfigurations-Befehle die dazwischen kommen, wie:
Wichtigen Teil zu beachten ist, dass die Ausführung darf regress; im zweiten Beispiel, zum Beispiel, wenn das Kabel herausgezogen wird, wird die IP-Adresse automatisch entfernt werden.
InformationsquelleAutor der Antwort Ambroz Bizjak
Gibt es zwei daemons, erkennen diese Ereignisse:
ifplugd und netplugd
InformationsquelleAutor der Antwort germanjaber
Meisten modernen Linux-Distributionen verwenden NetworkManager. Sie konnte die D-BUS verwenden, um Listener für die Ereignisse.
Wenn Sie möchten, ein Kommandozeilen-tool zum überprüfen des status, können Sie auch
mii-tool
angesichts der Tatsache, dass Sie Ethernet im Auge.InformationsquelleAutor der Antwort andri
Einige Genauigkeiten und tricks
Ich dies alles als normalen Benutzer (nicht root)
Schnappen infos aus
dmesg
Mit
dmesg
ist eins der 1. Dinge zu tun für Ihre Anfrage aktuellen Stand des Systems:Antworten konnte sowas wie:
oder
je nach Zustand, Nachricht kann variieren je nach hardware und Treiber verwendet.
Nota: dies könnte durch eine schriftliche
dmesg|grep eth.*Link.is|tail -n1
aber ich bevorzuge mitsed
.Test um
/sys
pseudo-DateisystemLesen oder schreiben unter
/sys
könnte Ihr system zerstören, vor allem, wenn Sie ausführen als root! Sie wurden gewarnt 😉Dies ist ein pooling-Methode, nicht eine echte Ereignis-tracking.
Machen könnte so etwas wie (einmal haben Sie unplugged und plugged zurück, je nachdem ):
(Drücken Sie Enter um die Schleife zu verlassen)
Nota: Diese erfordern
patch
installiert werden.In Ordnung, es muss schon etwas über dieses...
Je nach Linux-Installationkönnte man hinzufügen
if-up
undif-down
Skripte werden in der Lage zu reagieren auf diese Art von Veranstaltungen.Auf Debian basiert (wie Ubuntu), können Sie speichern Sie Ihre Skripten in
sehen
man interfaces
für mehr infos.InformationsquelleAutor der Antwort F. Hauri
Ich verwenden Sie diesen Befehl, um zu überprüfen, einen Draht verbunden ist:
Wenn das Ergebnis nach oben oder unten. Manchmal zeigt es einem unbekannt ist, dann müssen Sie prüfen,
Zeigt es 0 oder 1
InformationsquelleAutor der Antwort Sarvar Nishonboyev
auf arch linux. (ich bin nicht sicher, auf anderen Distributionen) Sie können die operstate. die sich zeigt, wenn die Verbindung mit oder nach unten, wenn nicht die operstate Leben auf
InformationsquelleAutor der Antwort screaminghard