как узнать имя компьютера python
Как я могу использовать Python для получения имени хоста системы?
Я пишу программу чата для локальной сети. Я хотел бы иметь возможность идентифицировать компьютеры и получить пользовательское имя компьютера с Python.
10 ответов
использовать socket и gethostname() функциональность. Это получит hostname компьютера, на котором работает интерпретатор Python:
оба они довольно портативные:
любые решения, используя HOST или HOSTNAME переменные среды не портативный. Даже если он работает в вашей системе при запуске, он может не работать при запуске в специальных средах, таких как cron.
вы, вероятно, загрузите модуль ОС в любом случае, поэтому другое предложение будет:
os.getenv(‘HOSTNAME’) и os.environ[‘HOSTNAME’] не всегда работают. В заданиях cron и WSDL имя хоста HTTP не задано. Используйте этот код:
он всегда (даже в Windows) возвращает полное имя хоста, даже если вы определили короткий псевдоним в /и т. д./хосты.
если вы определили псевдоним в /и т. д./хосты затем socket.gethostname() возвращает псевдоним. platform.uname()[1] делает то же самое.
я столкнулся с случаем, когда вышеуказанное не сработало. Вот кто я. используя сейчас:
сначала он вызывает gethostname, чтобы узнать, возвращает ли он что-то, похожее на имя хоста, если не использует мое исходное решение.
На самом деле вы можете посмотреть на весь результат в platform.uname()
Если я прав, вы ищете сокет.функция функцией gethostname:
socket.gethostname() можно сделать
в некоторых системах имя хоста задается в среде. Если это так для вас, то модуль ОС может вытащить его из окружающей среды через os.функции getenv. Например, если HOSTNAME-это переменная среды, содержащая то, что вы хотите, ее получит следующее:
вы можете использовать поле nodename и избегайте использования индексации массива:
хотя, даже документация os.команде uname предлагает использовать socket.gethostname()
Мне нужно было имя ПК для использования в моем файле pylog conf, и библиотека сокетов недоступна, но библиотека ОС доступна.
на Windows Я:
где defaultValue-строка, предотвращающая возврат None
Как я могу использовать Python, чтобы получить системное имя хоста?
Я пишу программу чата для локальной сети. Я хотел бы иметь возможность идентифицировать компьютеры и получить установленное пользователем имя компьютера с помощью Python.
11 ответов
Если я прав, вы ищете функцию socket.gethostname:
В некоторых системах имя хоста задается в среде. Если это так, модуль os может вытащить его из среды с помощью os.getenv. Например, если HOSTNAME является переменной окружения, содержащей то, что вы хотите, то получите следующее:
socket.gethostname() мог бы сделать
Оба они довольно портативны:
Вы, вероятно, все равно загрузите модуль os, поэтому другим предложением будет:
os.getenv(‘HOSTNAME’) и os.environ[‘HOSTNAME’] не всегда работают. В заданиях cron и WSDL HTTP HOSTNAME не установлен. Используйте это вместо:
Я столкнулся с случаем, когда вышеупомянутое не работало. Это то, что я использую сейчас:
Сначала он вызывает gethostname, чтобы узнать, возвращает ли он что-то, похожее на имя хоста, если нет, то использует мое оригинальное решение.
На самом деле вы можете посмотреть все результаты в platform.uname()
Мне нужно было имя компьютера для использования в моем файле конфигурации PyLog, и библиотека сокетов не доступна, но библиотека ОС есть.
Для Windows я использовал:
Вы можете использовать поле nodename и избегать индексации массива:
Хотя даже в документации os.uname предлагается использовать << X0 >>
Вы должны выполнить эту строку кода
И тогда вы можете использовать имя, чтобы найти адрес:
Больше информации о системе Windows с Python
Получите практические, реальные навыки Python на наших ресурсах и пути
В прошлом месяце я написал сообщение о том, чтобы получить системную информацию Windows, и я упомянул в одном из моих комментариев, что был еще один скрипт, который сделал некоторые из этого, а также другие вещи, но я не мог его найти. Ну, сегодня я пошел копать для этого и нашел сценарий, который я хотел. Таким образом, мы возвращаемся по дыре кролика для некоторых советов и трюков для получения информации о прекрасном мире Windows, используя Python.
Как получить имя вашей рабочей станции
В этом разделе мы будем использовать модуль платформы, чтобы получить имя нашего компьютера. Мы на самом деле упомянули этот трюк в моем предыдущем в моей предыдущей статье, но поскольку нам нужна эта информация для следующего фрагмента, я собираюсь повторить этот трюк здесь:
Это было довольно безболезненно, верно? Только две строки кода, и у нас есть то, что нам нужно. Но есть на самом деле, по крайней мере, еще один способ получить это:
Этот фрагмент также чрезвычайно прост, хотя первый немного короче. Все, что нам нужно было сделать, это импортировать встроенный розетка Модуль и позвоните его GetHostName метод. Теперь мы готовы получить IP-адрес нашего ПК.
Как получить IP-адрес вашего ПК с Python
Мы можем использовать информацию, которую мы выбрали выше, чтобы получить IP-адрес нашего ПК:
В этом примере мы снова используем розетка Модуль, но на этот раз мы его GetHostbyName Способ и пройти во имя ПК. розетка Затем модуль вернет IP-адрес.
Вы также можете использовать Тим Золотой WMI модуль Отказ В следующем примере исходит от его замечательной кулинарной книги WMI:
Все, что он делает, если петля по установленным сетевым адаптерам и распечатает их соответствующие описания и IP-адреса.
Как получить MAC-адрес с Python
Теперь мы можем обратить наше внимание на получение MAC-адреса. Мы посмотрим на два разных способа получить его, начиная с рецепта ActiveState:
Поскольку я не писал код выше, я не буду входить в него в глубину. Тем не менее, я понимаю, что этот сценарий работает с первой проверкой, чтобы увидеть, может ли он сделать запрос ARP, который доступен только в Windows 2000 и выше. После того, как это подтвердило, он пытается использовать модуль CTYPES, чтобы получить адрес INET. После этого сделано, он проходит через некоторые вещи, которые я не понимаю, чтобы построить MAC-адрес.
Когда я впервые начал поддерживать этот код, я думал, что должен быть лучший способ получить MAC-адрес. Я думал, что, возможно, модуль WMI Tim Golden WMI или, возможно, пакет Pywin32 будет ответом. Я довольно уверен, что он дал мне следующий фрагмент или я нашел его на одном из архивов списка рассылки Python:
К сожалению, хотя этот метод работает, заметно замедлял сценарий входа в систему, поэтому я закончил использовать оригинальный метод в конце. Я думаю, что г-н Golden выпустил более новую версию модуля WMI, так что это возможно, что теперь это быстрее.
Как получить имя пользователя
Получение входа в текущее имя пользователя с Python Trivial. Все, что вам нужно, это Pywin32 пакет Отказ
Один быстрый импорт, и у нас есть имя пользователя в двух строках кода.
Как найти, какие группы пользователь в
Мы можем использовать UserID, который мы приобрели выше, чтобы узнать, какие группы это в.
Это более пугающее, чем любой из предыдущих скриптов, на которых мы смотрели, но это на самом деле довольно легко понять. Сначала мы импортируем модули или метод, который нам нужен. Далее у нас есть простая функция, которая принимает пользовательский объект в качестве своего единственного параметра. Эта функция будет включать в себя групп пользователя и добавить их в список, который затем возвращается к абонеру. Следующая часть головоломки получает основной контроллер домена, который мы используем ОС модуль для.
Мы передаем PDCName и UserID в GetObject (что является частью модуля Win32Com), чтобы наш пользовательский объект. Если это работает правильно, то мы можем получить полное имя и группы пользователя. Если он не удается, то мы ловим ошибку и попытаемся получить информацию с некоторыми функциями из модуля Win32Net. Если это также не удается, мы просто устанавливаем некоторые значения по умолчанию.
Обертывание
Надеюсь, вы узнали некоторые ценные трюки для использования в вашем собственном коде. Я использовал эти сценарии в течение нескольких лет с Python 2.4+, и они отлично работают!