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.
Antworten
Zu viele Anzeigen?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())
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.
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.
- See previous answers
- Weitere Antworten anzeigen