Fondamentalement, j'ai quelques ordinateurs Windows sur mon réseau qui exécuteront un script python. Un ensemble différent d'options de configuration doit être utilisé dans le script en fonction de l'ordinateur qui exécute ce script.
Comment obtenir ce nom d'ordinateur dans le script python?
Disons que le script s'exécutait sur un ordinateur nommé DARK-TOWER, j'aimerais écrire quelque chose comme ceci:
>>> python.library.get_computer_name()
'DARK-TOWER'
Puis-je utiliser une bibliothèque standard ou tierce?
python
windows
networking
Eric Palakovich Carr
la source
la source
socket.gethostname()
retourne la libcgethostname()
, tandis queplatform.node()
retourneplatform.uname()[1]
qui est quelque peu lié à l'os.uname()
appel de la libcuname()
... sur la valeur d'être la même sur différentes plates-formes.os.environ['COMPUTERNAME']
retournera toutes les majuscules, alors queplatform.node()
etsocket.gethostname()
peut renvoyer une casse mixte.la source
De https://mail.python.org/pipermail/python-list/2006-April/397494.html
la source
None
pour moi sur Ubuntu 16.04. Fait intéressant,HOSTNAME
est une variable d'environnement définie dans bash, mais les deuxos.getenv('HOSTNAME')
retourneNone
également, tandis quesocket.gethostname()
renvoie la chaîne correcte.Comme l'a dit Eric Palakovich Carr, vous pouvez utiliser ces trois variantes.
Je préfère les utiliser ensemble:
Je le préfère lors du développement d'applications cross-patform pour être sûr;)
la source
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
au lieu den2
)Étant donné que les scripts python fonctionnent à coup sûr sur un système Windows, vous devez utiliser l'API Win32 GetComputerName ou GetComputerNameEx
Vous pouvez obtenir le nom DNS complet, ou le nom NETBIOS, ou une variété de choses différentes.
Ou:
la source
Je parie que gethostname fonctionnera à merveille.
la source
la source