Grundsätzlich habe ich ein paar Windows-Computer in meinem Netzwerk, auf denen ein Python-Skript ausgeführt wird. Je nachdem, auf welchem Computer dieses Skript ausgeführt wird, sollten im Skript unterschiedliche Konfigurationsoptionen verwendet werden.
Wie würde ich diesen Computernamen im Python-Skript erhalten?
Angenommen, das Skript wurde auf einem Computer namens DARK-TOWER ausgeführt. Ich möchte so etwas schreiben:
>>> python.library.get_computer_name()
'DARK-TOWER'
Gibt es eine Standard- oder Drittanbieter-Bibliothek, die ich verwenden kann?
python
windows
networking
Eric Palakovich Carr
quelle
quelle
socket.gethostname()
gibt die libcgethostname()
, währendplatform.node()
Erträge ,platform.uname()[1]
die mit etwas verwandt istos.uname()
, um die libc nenntuname()
... Es sieht aus wie sie an der gleichen Stelle enden könnte, aber sie nehmen ganz unterschiedliche Wege dorthin zu kommen , und ich würde nicht verlassen auf den Wert, auf verschiedenen Plattformen gleich zu sein.os.environ['COMPUTERNAME']
alle Großbuchstaben zurückgegeben werden, während gemischte Groß-platform.node()
undsocket.gethostname()
Kleinschreibung zurückgegeben werden können.quelle
Von https://mail.python.org/pipermail/python-list/2006-April/397494.html
quelle
None
für mich unter Ubuntu 16.04 zurück. InteressanterweiseHOSTNAME
ist eine definierte Umgebungsvariable in der Bash, aber beideos.getenv('HOSTNAME')
kehrtNone
auch, währendsocket.gethostname()
kehrt die richtige Zeichenfolge.Wie Eric Palakovich Carr sagte, könnten Sie diese drei Varianten verwenden.
Ich benutze sie lieber zusammen:
Ich bevorzuge es bei der Entwicklung von Cross-Patform-Anwendungen, um sicher zu sein;)
quelle
if n1==n2 or n1==n3: return n1 elif n2==n3: return n2 else: raise Exception("Computer names are not equal to each other")
(n1
stattn2
)Da die Python-Skripte sicher auf einem Windows-System ausgeführt werden, sollten Sie die Win32-API GetComputerName oder GetComputerNameEx verwenden
Sie können den vollständig qualifizierten DNS-Namen oder NETBIOS-Namen oder eine Vielzahl verschiedener Dinge erhalten.
Oder:
quelle
Ich wette, gethostname wird wunderbar funktionieren.
quelle
quelle