968 Stimmen

Wie kann ich mit Python den System-Hostnamen ermitteln?

Ich schreibe ein Chat-Programm für ein lokales Netzwerk. Ich würde gerne in der Lage sein, Computer zu identifizieren und den vom Benutzer eingestellten Computernamen mit Python zu erhalten.

1466voto

Alex Punkte 61397

Utilisez socket und seine gethostname() Funktionalität. Dadurch wird die hostname des Computers, auf dem der Python-Interpreter läuft:

import socket
print(socket.gethostname())

495voto

robert Punkte 31314

Beide sind ziemlich tragbar:

import platform
platform.node()

import socket
socket.gethostname()

Alle Lösungen, die die HOST o HOSTNAME Umgebungsvariablen sind nicht portabel. Selbst wenn es auf Ihrem System funktioniert, wenn Sie es ausführen, funktioniert es möglicherweise nicht, wenn es in speziellen Umgebungen wie Cron ausgeführt wird.

187voto

mike0042 Punkte 1685

Sie werden das os-Modul wahrscheinlich sowieso laden, daher wäre ein anderer Vorschlag:

import os
myhost = os.uname()[1]

80voto

Lucien Hercaud Punkte 739

Was ist mit :

import platform

h = platform.uname()[1]

Vielleicht möchten Sie sich das Ergebnis in platform.uname()

65voto

Tom Ekberg Punkte 2025

os.getenv('HOSTNAME') y os.environ['HOSTNAME'] funktionieren nicht immer. In Cron-Jobs und WSDL ist der HTTP HOSTNAME nicht gesetzt. Verwenden Sie stattdessen dies:

import socket
socket.gethostbyaddr(socket.gethostname())[0]

Es wird immer (auch unter Windows) ein voll qualifizierter Hostname zurückgegeben, auch wenn Sie einen kurzen Alias in /etc/hosts .

Wenn Sie einen Alias in /etc/hosts では socket.gethostname() wird den Alias zurückgeben. platform.uname()[1] macht das Gleiche.

Ich bin auf einen Fall gestoßen, in dem das oben genannte nicht funktioniert hat. Dies ist, was ich jetzt verwenden:

import socket
if socket.gethostname().find('.')>=0:
    name=socket.gethostname()
else:
    name=socket.gethostbyaddr(socket.gethostname())[0]

Es ruft zuerst gethostname auf, um zu sehen, ob es etwas zurückgibt, das wie ein Hostname aussieht, wenn nicht, wird meine ursprüngliche Lösung verwendet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X