Obtenha informações de endereço IP com Python

Índice
Pitão Como linguagem de programação é muito poderosa, permite-nos realizar ações e obter resultados muito importantes na manipulação das diferentes características dos nossos equipamentos, o que podemos conseguir através do Endereços IP, portas e soquetes. Cada um nos permite chegar a um ponto diferente e igualmente importante dentro da estrutura da rede.
Um dos ambientes onde Pitão tem ganhado mais força está no desenvolvimento de programas para a rede, pois graças às suas aulas de manuseio de soquete, podemos usar a estrutura de rede a nosso favor, essa estrutura pode ser local ou através de Internet, o que nos dá grande versatilidade e potência nos programas que podemos realizar.
A biblioteca de socketsEsta é a primeira parada que devemos fazer, esta biblioteca traz funcionalidades baseadas em aulas e em instâncias, o que significa que podemos usar algumas coisas sem criar objetos.
Isso pode não fazer muita diferença para nós, no entanto, a possibilidade de trabalhar sem instâncias abre algumas possibilidades, como fazer scripts mais curtos e nos permitir usar ferramentas poderosas sem adicionar complexidade adicional ao nosso código.
Este primeiro exercício é muito interessante, pois desde a consola de comandos do nosso sistema poderemos obter informação do nosso próprio equipamento utilizando Pitão e algumas linhas de código.
RequisitosComo requisito, devemos ter instalado o intérprete de Pitão em nossa máquina para poder executar os exemplos que mostraremos neste tutorial.
O código que escrevemos é executado no versão 2.7 do Pitão portanto, algumas modificações podem ser necessárias se uma versão diferente for usada. Uma ferramenta que pode nos ajudar com problemas de compatibilidade de versão é o Virtualenv, que nos permite rodar diferentes versões do Pitão em instalações independentes sem a necessidade de configurações complexas para isso.
Em primeiro lugar, vamos abrir nosso console de comando e entrar no Terminal interativo PythonPara isso, se tivermos instalado a linguagem corretamente, basta colocar a palavra python e teremos acesso a ela:

Este console é muito útil para instruções de teste, como veremos no exemplo abaixo, no entanto, para usos em que precisamos manter o código que criamos, pode não ser a melhor alternativa, como veremos mais tarde no tutorial.
Primeiro devemos importar nossa biblioteca, para isso usaremos o seguinte comando:
soquete de importação

Então podemos começar a coletar as informações que desejamos, para isso só temos que saber o que estamos procurando, por exemplo, para obter o nome de nossa equipe basta escrever o seguinte:
computer_name = socket.gethostname ()

Então podemos imprimir a variável na tela para ver seu conteúdo, para isso simplesmente chamamos o método impressão:
print "O nome do computador é:% s"% computer_name

Isso deve nos dar um resultado como o seguinte em nosso terminal interativo:

Como pudemos ver, é muito fácil gerenciar a biblioteca tomada e operações do console Pitão, agora podemos ir para o próximo ponto que é obter o endereço IP de uma vez, porque só temos que fazer algo semelhante, só que vamos usar a variável com o nome do computador que capturamos inicialmente e faremos o seguinte:
host_address = socket.gethostbyname (host_name)

Feito isso, imprimimos a variável anterior:
print "O IP é:% s"% computer_address

Vamos ver como isso fica em nosso terminal:

Como podemos ver, obtivemos informações extremamente úteis sem muito esforço, mas isso não é nada comparado ao que podemos fazer.
O exposto acima é bastante prático, mas não é muito útil na sua apresentação, já que não podemos acessá-lo com frequência, mas precisaríamos inseri-lo linha por linha, para evitar esse problema vamos criar um programa real que nos dê o informações que até agora sabemos obter.
Para isso, precisaremos de um editor de texto simples, recomendamos o SublimeText 2 e um local onde possamos hospedar nosso programa e que esteja ao alcance de nossa instalação de Pitão com suas permissões correspondentes.
Para conseguir uma melhoria, vamos criar uma função que nos permite chamar nossas instruções de forma recorrente, sem ter que escrever todo o código de cada vez, em nosso novo arquivo que chamaremos team_information.py vamos colocar o seguinte conteúdo:
 #! / usr / bin / env Python import socket def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (computer_name) print "o nome do computador é:% s"% computer_name print "O IP é: % s "% computer_address if __name__ == '__main__': get_team_info () 

É muito importante que respeitemos as tabulações e recuos do código, pois é a única maneira pela qual Pitão pode reconhecer alterações de bloco, se estivermos usando Texto Sublime Não teremos que nos preocupar, pois nos permite verificar visualmente as indentações de nosso código:

Agora em nosso console de comando do sistema e sem entrar no de Pitão Podemos chamar nosso arquivo e veremos o resultado, para isso executamos python filename.py como podemos ver na imagem a seguir:

Já que vimos algumas bases de como a biblioteca funciona tomadaVamos levar isso a um novo nível. Sem a necessidade de usar novas instruções, vamos agora obter o endereço de um computador remoto, isso pode ser muito importante para coletar informações para qualquer validação que queiramos fazer.
Neste caso, vamos modificar um pouco nosso programa anterior, em um novo arquivo agora chamado remote_information.py vamos colocar o seguinte:
 #! / usr / bin / env Python import socket def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "O computador remoto é:% s"% remote_computer print "O endereço IP é:% s"% socket.gethostbyname (remote_host) exceto socket.error, err_msg: print "% s:% s"% (remote_host, err_msg) if __name__ == '__main__': get_remote_host_info () 

O que fizemos é simplesmente indicar o nome de um hospedeiro remotoComo não temos nada a provar, podemos usar um site conhecido para obter informações dele, neste exemplo usaremos o endereço de Google, neste caso o nome da nossa equipe será Url e usando o mesmo método gethostbyname () nós obteremos as informações.
Também adicionamos um manipulador de erros no caso de rejeitarmos o endereço que colocamos e assim sabermos as causas, finalmente quando o executarmos em nosso console obteremos o seguinte:

Se quisermos fazer programas que funcionem sob protocolos de rede, é muito provável que precisemos usar os diferentes formatos em que um endereço IP pode ser expresso, tudo isso de acordo com a conveniência que vemos.
Formatos popularesExistem dois formatos muito populares para endereços IP, o primeiro é inet_aton () que é uma versão compactada do IP e o seguinte é inet_ntoa () que é o oposto e é uma versão não empacotada do IP.
Cada um tem sua utilidade em programas, porém não é o tema principal deste tutorial, a única coisa adicional que podemos indicar é que esses formatos e suas funções se aplicam apenas a IPv4, em vez de IPv6 outros se aplicam.
Vamos construir um novo programa que nos permita fazer esta conversão:
 #! / usr / bin / env Python import socket from binascii import hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') para dir_ip em [remote_host_a, remote_host_b] :packed_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (pack_ip) print "Endereço IP:% s => Embalado:% s, Não embalado:% s"% (dir_ip, hexlipify (embalado_ip) )), unpacked_ip) if __name__ == '__main__': format_ip_address () 

Aqui começamos nosso programa novamente, importando a biblioteca tomada, então importamos uma biblioteca chamada hexlificar que nos permite estabelecer uma conversão de formatos hexadecimais, para que sejam legíveis, usaremos isso para poder decifrar os endereços IP. Para tornar isso mais interessante, colocamos dois computadores remotos dos quais vamos obter os endereços IP e com um para loop vamos iterar por meio de ambos, dentro da iteração é quando podemos fazer as conversões com os formatos de endereço IPv4 que obtivemos.
Por fim causamos uma impressão de cada um, para isso contamos com os métodos inet_aton () e inet_ntoa () ambos da biblioteca de soquetes, o que é importante lembrar que é baseado em classe e não baseado em instância.
Vamos ver como fica tudo isso quando executamos o arquivo anterior em nosso console de comando:

Com este exemplo misturamos todos os truques que vimos anteriormente, desde obter a informação de um computador remoto, até construir uma função que nos permite obter a informação sem ter que escrever tudo no console interativo do Pitão.
ImportanteUma recomendação importante é que devemos usar a documentação quando tivermos alguma dúvida e graças à grande comunidade de Pitão Na Internet podemos encontrar praticamente uma solução para qualquer dúvida ou problema que enfrentamos.
Com isso encerramos este tutorial, é apenas uma entrada para o que é programação para redes com PitãoNo entanto, é muito útil saber que a partir de nossos programas podemos manipular informações de nossos computadores e computadores remotos, isso sem ter que fazer inclusões extras de bibliotecas ou múltiplas linhas de código para obtê-lo.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave