Como obter seu IP público em um script Linux Bash

0
298

[ad_1]

fatmawati achmad zaenuri / Shutterstock.com

Você pode obter seu IP externo de um site com o comando curl como “curl -s ifconfig.me”. No entanto, os sites podem mudar. Para obter uma resposta mais confiável, use o comando dig como “dig @ resolver1.opendns.com myip.opendns.com + short” para obter seu IP de um servidor DNS.

Você precisará do seu endereço IP externo se quiser se conectar remotamente ao seu computador. Localizá-lo manualmente é fácil, mas veja como encontrá-lo a partir de um script Linux.

Endereços IP internos e externos

Os endereços de protocolo da Internet são usados ​​para identificar dispositivos em uma rede. Eles são um rótulo exclusivo na rede, atribuído a um único dispositivo. Se outro dispositivo quiser enviar dados para esse dispositivo, ele poderá fazê-lo usando seu endereço IP.

Seu modem de banda larga possui um roteador de rede integrado que direciona o tráfego de rede pela rede de um dispositivo para outro. É também a autoridade local que atribui endereços IP aos dispositivos quando eles ingressam na rede. Ele também mantém uma tabela de nomes de rede e endereços IP. Isso permite que você dê nomes significativos aos computadores em sua rede porque os nomes são mais fáceis para os humanos trabalharem do que listas de números.

Dispositivos no Internet ele também tem um endereço IP. Alguns deles também têm nomes, como sites. Os provedores de serviços de nomes de domínio pesquisam nomes de domínio de sites e os trocam por endereços IP automaticamente.

O seu modem de banda larga tem acesso à Internet próprio ou externo Endereço IP do seu provedor de serviços de Internet (ISP). Independentemente de quantos dispositivos você possa ter em sua casa conectados à Internet, todo o tráfego combinado deles sai por esse endereço IP.

Se você estiver fora da cidade e quiser se conectar a um serviço executado em um de seus computadores domésticos, precisará usar seu endereço IP externo para fazer isso. Seu roteador precisará ser configurado para rotear sua solicitação de conexão para o dispositivo apropriado em sua casa, é claro.

A menos que você pague ao seu ISP um pouco mais a cada mês por um estático Endereço IP Seu endereço IP externo pode mudar de tempos em tempos. A reinicialização do modem de banda larga pode muito bem resultar na obtenção de um endereço IP externo diferente. Portanto, se você precisar saber seu endereço IP externo, não poderá verificá-lo apenas uma vez e armazená-lo. Você precisará determinar periodicamente o que é.

Encontre seu endereço IP externo

Descobrir seu endereço IP externo significa conversar com algo fora da sua rede. Em outras palavras, acessar algo na Internet que pode nos fornecer as informações que desejamos. Precisamos olhar para o vazio e ver o que olha de volta para nós. E então peça nosso endereço externo.

Existem duas maneiras de fazermos isso. Uma maneira envolve sites. Existem muitos sites que mostram qual é o seu endereço IP externo e muitas outras informações também. Você pode acessá-los em seu navegador ou usar uma ferramenta de linha de comando como curl que pode fazer solicitações HTTPS.

A outra maneira é usar um comando dedicado como dig. a dig O comando consulta os servidores DNS para recuperar informações.

Usando um navegador

Obviamente, usar um navegador não é uma maneira amigável de obter seu endereço IP externo. Mas olhar para um site que oferece esse serviço pode nos dar informações úteis. Costumávamos recomendar o ip4.me, mas o site não foi atualizado para HTTPS. Ele ainda usa o HTTP antigo e inseguro. O site ainda funciona, mas agora existem alternativas melhores.

O site ifconfig.me fornece um bom conjunto de informações.

O site ifconfig.me mostrando um endereço IP externo

Isso relata nosso IP externo como 178.238.11.140. Ao rolar a página da Web, você encontrará uma lista de comandos que podem ser usados ​​para recuperar informações do site.

O site ifconfig.me mostrando um conjunto de comandos cURL

Os exemplos que eles dão de todo o uso. curl para interrogar o local. Então vamos dar uma olhada no uso curl.

usando curl

Em nossas máquinas de teste, o Fedora 37 já tinha curl instalado. Precisávamos instalá-lo em nossos computadores Ubuntu e Manjaro.

Para instalá-lo no Ubuntu digite:

sudo apt install curl

Instalando o curl no Ubuntu

O comando no Manjaro é:

sudo pacman -S curl

Instalando o curl no Manjaro

Podemos testar isso com o primeiro comando que aparece no ifconfig.me pagina web.

curl ifconfig.me

Obtenha um endereço IP externo usando a ação padrão do site ifconfig.me

Nosso endereço IP externo é recuperado e exibido na janela do terminal. A saída é básica. Não há nem mesmo um caractere de nova linha impresso após a string. O prompt de comando é anexado ao endereço IP.

Este comando funciona porque retornar o endereço IP é a ação padrão do site. Se a ação padrão mudar, podemos obter um resultado diferente. Para atender a isso, podemos especificar que estamos solicitando nosso endereço IP adicionando o identificador “ip” ao URL.

curl ifconfig.me/ip

Obtenha um endereço IP externo usando o site ifconfig.me com o especificador de ip

Isso retorna o endereço IP como antes.

Isso ilustra o problema de usar um site como fonte do seu endereço IP. Os sites podem ser fechados ou podem mudar a forma como operam, ou o formato das informações retornadas. Essas alterações farão com que os scripts que dependem desses sites falhem ou se comportem de forma imprevisível.

Usar um recurso confiável e respeitável como um servidor DNS é uma maneira mais robusta de obter seu IP externo. Para consultar um servidor DNS, precisamos usar o comando dig.

RELACIONADO: O que é DNS e devo usar outro servidor DNS?

Usando o comando dig

Desta vez, dig foi instalado no Fedora e no Ubuntu, e só tivemos que instalá-lo no Manjaro.

O comando é o usual. pacman comando, então sem surpresas, mas o nome do pacote não é o que você poderia esperar.

sudo pacman -S bind-tools

Instalando a escavação em Manjaro

Usar dig Para descobrir nosso endereço IP externo, precisamos apontá-lo para um servidor DNS. Estamos usando o servidor OpenDNS, fornecido pela Cisco.

Precisamos especificar o nome do servidor DNS que queremos usar, precedido por uma arroba “@”. Também precisamos nomear o tipo de registro que queremos recuperar. Neste caso é “myip”. a +short A opção garante que obtenhamos uma resposta concisa e não detalhada.

dig @resolver1.opendns.com myip.opendns.com +short

Recupere um endereço IP externo de um servidor DNS com o comando dig

Desta vez, nosso endereço IP tem um novo caractere de linha impresso depois dele. Como veremos, isso é impresso após a string do endereço IP, não é parte integrante da string em si.

RELACIONADO: Como usar o comando dig no Linux

Usando estes em um script

Há muitas razões pelas quais você pode querer saber seu endereço IP externo de dentro de um script. Talvez você tenha um script que monitore se o seu endereço IP externo mudou e o notifique quando isso acontecer. Ou talvez um servidor notifique seus clientes quando seu endereço muda. Quaisquer que sejam suas razões, podemos implementar os comandos que usamos na linha de comando dentro de um script com bastante facilidade.

Para recuperar nosso endereço IP externo e atribuí-lo a uma variável, precisamos apenas envolver o comando dentro de uma substituição de comando, $(...) e atribua-o a uma variável, assim:

variable=$(...)

O comando entre parênteses é executado e o valor de retorno é substituído pela expressão. Neste exemplo, o comando é simplificado para “variável = valor de retorno”.

RELACIONADO: Como trabalhar com variáveis ​​no Bash

Aqui está em um script. Nós adicionamos o -s opção (silenciosa) para o curl para impedi-lo de relatar o progresso da recuperação de dados.

#!/bin/bash

extaddr=$(curl -s ifconfig.me)

echo "The external IP address is $extaddr (from cURL)"

Copie este script em um editor, salve-o como “getex1.sh” e torne-o executável com o chmod domínio.

chmod +x getex1.sh

Fazendo um script executável com chmod

Vamos executar o script e ver o que obtemos.

./getex1.sh

Executando o script getex1.sh

Para fazer o mesmo com a opção mais robusta de usar um servidor DNS em vez de um site, basta substituir o curl comando com o dig uma.

#!/bin/bash

extaddr=$(dig @resolver1.opendns.com myip.opendns.com +short)

echo "The external IP address is $extaddr (from dig)"

Salve isso como script “getex2.sh” e torne-o executável com chmod.

chmod +x getex2.sh

Fazendo um script executável com chmod

Vamos executar este script.

./getex2.sh

Executando o script getex2.sh

Podemos ver na saída dos dois scripts que apesar do comando dig imprimindo um caractere de nova linha na linha de comando, o script não adiciona uma nova linha ao extaddr variável.

ir para a confiabilidade

É sempre mais seguro usar um serviço reconhecido com boa reputação e formato de saída previsível do que usar um site “não oficial”. Como tudo na Internet, tenha cuidado com quem você obtém suas informações.

RELACIONADO: Como permitir que scripts do Linux detectem que estão sendo executados em máquinas virtuais

[ad_2]