Basicamente, tenho alguns computadores Windows em minha rede que estarão executando um script Python. Um conjunto diferente de opções de configuração deve ser usado no script, dependendo de qual computador está executando esse script.
Como obteria esse nome de computador no script Python?
Digamos que o script estava sendo executado em um computador chamado DARK-TOWER, eu gostaria de escrever algo assim:
>>> python.library.get_computer_name()
'DARK-TOWER'
Existe uma biblioteca padrão ou de terceiros que posso usar?
python
windows
networking
Eric Palakovich Carr
fonte
fonte
socket.gethostname()
retorna o libcgethostname()
, enquantoplatform.node()
retornaplatform.uname()[1]
que está um tanto relacionado aoos.uname()
que chama o libcuname()
... Parece que eles podem acabar no mesmo lugar, mas eles tomam caminhos bem diferentes para chegar lá e eu não estaria contando sobre o valor ser o mesmo em diferentes plataformas.os.environ['COMPUTERNAME']
retornará todas as letras maiúsculas, enquantoplatform.node()
esocket.gethostname()
pode retornar letras maiúsculas e minúsculas.fonte
De https://mail.python.org/pipermail/python-list/2006-April/397494.html
fonte
None
para mim no Ubuntu 16.04. Curiosamente,HOSTNAME
é uma variável de ambiente definida em bash, mas ambosos.getenv('HOSTNAME')
retornamNone
também, enquantosocket.gethostname()
retorna a string correta.Como Eric Palakovich Carr disse, você poderia usar essas três variantes.
Eu prefiro usá-los juntos:
Eu prefiro ao desenvolver aplicativos de cross patform para ter certeza;)
fonte
if n1==n2 or n1==n3: return n1 elif n2==n3: return n2 else: raise Exception("Computer names are not equal to each other")
(emn1
vez den2
)Como os scripts python estão rodando em um sistema Windows, você deve usar a API Win32 GetComputerName ou GetComputerNameEx
Você pode obter o nome DNS totalmente qualificado ou o nome NETBIOS ou uma variedade de coisas diferentes.
Ou:
fonte
Aposto que gethostname funcionará perfeitamente.
fonte
fonte