Получение имени компьютера windows под управлением скрипта python?


в принципе, у меня есть несколько компьютеров Windows в моей сети, которые будут работать под управлением скрипта python. В зависимости от того, на каком компьютере выполняется этот сценарий, в сценарии должен использоваться другой набор параметров конфигурации.

Как я могу получить это имя компьютера в скрипте python?

допустим, скрипт был запущен на компьютере с именем DARK-TOWER, я бы хотел написать что-то вроде этого:

>>> python.library.get_computer_name()
'DARK-TOWER'

есть ли стандартная или сторонняя библиотека Я могу использовать?

6 66

6 ответов:

оказывается, есть три варианта (в том числе два уже ответили ранее):

>>> import platform
>>> import socket
>>> import os
>>> platform.node()
'DARK-TOWER'
>>> socket.gethostname()
'DARK-TOWER'
>>> os.environ['COMPUTERNAME']
'DARK-TOWER'
import socket
socket.gethostname()

Как сказал Эрик Карр, вы можете использовать эти три варианта.

Я предпочитаю использовать их вместе:

def getpcname():
    n1 = platform.node()
    n2 = socket.gethostname()
    n3 = os.environ["COMPUTERNAME"]
    if n1 == n2 == n3:
        return n1
    elif n1 == n2:
        return n1
    elif n1 == n3:
        return n1
    elif n2 == n3:
        return n2
    else:
        raise Exception("Computernames are not equal to each other")

Я предпочитаю это при разработке кросс-приложений patform, чтобы быть уверенным;)

поскольку скрипты python наверняка работают в системе windows, вы должны использовать Win32 API GetComputerName или GetComputerNameEx

Вы можете получить полное DNS-имя, или NETBIOS-имя, или множество разных вещей.

import win32api
win32api.GetComputerName()

>>'MYNAME'

или:

import win32api
WIN32_ComputerNameDnsHostname = 1 
win32api.GetComputerNameEx(WIN32_ComputerNameDnsHostname)

>> u'MYNAME'

ставлю gethostname будет прекрасно работать.