Hoe u uw openbare IP-adres in een Linux Bash-script kunt krijgen

Hoe u uw openbare IP-adres in een Linux Bash-script kunt krijgen
fatmawati achmad zaenuri/Shutterstock.com
U kunt uw externe IP van een website halen met het curl-commando zoals “curl -s ifconfig.me”. Websites kunnen echter veranderen. Gebruik voor een betrouwbaarder antwoord de opdracht dig in plaats van “dig @resolver1.opendns.com myip.opendns.com +short” om uw IP van een DNS-server te krijgen.

U hebt uw externe IP-adres nodig als u op afstand verbinding wilt maken met uw computer. Handmatig vinden is eenvoudig, maar hier is hoe je het kunt vinden vanuit een Linux-script.

Interne en externe IP-adressen

Internet Protocol-adressen worden gebruikt om apparaten op een netwerk te identificeren. Ze zijn een uniek label op het netwerk, toegewezen aan een enkel apparaat. Als een ander apparaat gegevens naar dat apparaat wil sturen, kan het dat doen met behulp van zijn IP-adres.

Hoe werken IP-adressen?

VERWANTHoe werken IP-adressen?

Uw breedbandmodem heeft een ingebouwde netwerkrouter die het netwerkverkeer rond het netwerk van apparaat naar apparaat leidt. Het is ook de lokale overheid die IP-adressen toewijst aan apparaten wanneer ze verbinding maken met het netwerk. Het onderhoudt ook een tabel met netwerknamen en IP-adressen. Hierdoor kunt u betekenisvolle namen geven aan de computers in uw netwerk, omdat – voor mensen – namen gemakkelijker zijn om mee te werken dan lijsten met nummers.

Apparaten op de internetten hebben ook een IP-adres. Sommigen van hen hebben ook namen, zoals websites. Domeinnaamserviceproviders zoeken domeinnamen van websites op en wisselen deze automatisch in voor IP-adressen.

Uw breedbandmodem krijgt een eigen internetaansluiting of extern IP-adres door uw internetprovider (ISP). Ongeacht het aantal apparaten dat u in huis heeft dat is verbonden met internet, hun gecombineerde verkeer gaat allemaal via dat ene IP-adres.

Als u de stad uit bent en verbinding wilt maken met een dienst die op een van de computers in uw huis draait, moet u hiervoor uw externe IP-adres gebruiken. Uw router moet natuurlijk worden ingesteld om uw verbindingsverzoek naar het juiste apparaat in uw huis te leiden.

Tenzij je elke maand een beetje extra betaalt aan je ISP voor een statisch IP-adres uw externe IP-adres kan van tijd tot tijd veranderen. Het opnieuw opstarten van uw breedbandmodem kan ertoe leiden dat u een ander extern IP-adres krijgt. Dus als u uw externe IP-adres wilt weten, hoeft u dit niet één keer te controleren en op te slaan. U moet periodiek bepalen wat het is.

Uw externe IP-adres vinden

Om uw externe IP-adres te achterhalen, moet u praten met iets dat zich buiten uw netwerk bevindt. Met andere woorden, toegang krijgen tot iets op internet dat ons de informatie kan geven die we willen. We moeten in de leegte kijken en zien wat er naar ons terugkijkt. En vraag dan naar ons externe adres.

Er zijn twee manieren waarop we dit kunnen doen. Een manier omvat websites. Er zijn veel websites die u laten zien wat uw externe IP-adres is, en ook een heleboel andere informatie. U kunt deze openen in uw browser of een opdrachtregelprogramma zoals curl die HTTPS-verzoeken kan doen.

De andere manier is om een ​​speciale opdracht zoals dig. De dig opdracht ondervraagt ​​DNS-servers om informatie op te halen.

Een browser gebruiken

Het gebruik van een browser is natuurlijk geen scriptvriendelijke manier om uw externe IP-adres te verkrijgen. Maar als we naar een website kijken die die service levert, kunnen we nuttige informatie krijgen. Vroeger raadden we ip4.me aan, maar de site is niet bijgewerkt naar HTTPS. Het gebruikt nog steeds de oudere, onveilige HTTP. De site werkt nog steeds, maar er zijn nu betere alternatieven.

De site ifconfig.me biedt een goede set informatie.

De website ifconfig.me geeft een extern IP-adres weer

Dit rapporteert ons externe IP als 178.238.11.140. Als u door de webpagina naar beneden scrolt, vindt u een lijst met opdrachten die u kunt gebruiken om informatie van de site op te halen.

De ifconfig.me-website met een reeks cURL-commando's

De voorbeelden die ze geven zijn allemaal bruikbaar curl om de site te ondervragen. Dus laten we eens kijken naar het gebruik curl.

Krul gebruiken

Op onze testmachines had Fedora 37 dat al curl geïnstalleerd. We moesten het installeren op onze Ubuntu- en Manjaro-computers.

Om het op Ubuntu-type te installeren:

sudo apt install curl

Curl installeren op Ubuntu

Het commando op Manjaro is:

sudo pacman -S curl

Curl installeren op Manjaro

We kunnen dit uitproberen met het eerste commando dat op de ifconfig.me webpagina.

curl ifconfig.me

Een extern IP-adres ophalen met de standaardactie van de ifconfig.me-website

Ons externe IP-adres wordt opgehaald en weergegeven in het terminalvenster. De uitvoer is kaal. Er is niet eens een newline-teken afgedrukt na de string. De opdrachtprompt staat recht tegen het IP-adres aan.

Curl gebruiken om bestanden te downloaden vanaf de Linux-opdrachtregel

VERWANTCurl gebruiken om bestanden te downloaden vanaf de Linux-opdrachtregel

Deze opdracht werkt omdat het retourneren van het IP-adres de standaardactie van de website is. Als de standaardactie ooit verandert, krijgen we mogelijk een ander resultaat terug. Om hieraan tegemoet te komen, kunnen we specificeren dat we om ons IP-adres vragen door de “ip”-identificatiecode aan de URL toe te voegen.

curl ifconfig.me/ip

Een extern IP-adres ophalen met behulp van de ifconfig.me-website met de ip-specificatie

Dit retourneert het IP-adres zoals voorheen.

Dit illustreert het probleem met het gebruik van een website als de bron van uw IP-adres. Websites kunnen sluiten of ze kunnen de manier waarop ze werken of het formaat van de geretourneerde informatie wijzigen. Deze wijzigingen zorgen ervoor dat scripts die afhankelijk zijn van deze sites falen of zich onvoorspelbaar gedragen.

Het gebruik van een gerenommeerde en betrouwbare bron zoals een DNS-server is een robuustere manier om uw externe IP te verkrijgen. Om een ​​DNS-server te bevragen, moeten we de opdracht dig gebruiken.

Het dig-commando gebruiken

Deze keer, dig is geïnstalleerd op Fedora en Ubuntu, en we hoefden het alleen op Manjaro te installeren.

De opdracht is de gebruikelijke pacman commando, dus geen verrassingen daar, maar de pakketnaam is niet wat je zou verwachten.

sudo pacman -S bind-tools

Graaf installeren op Manjaro

Gebruiken dig om ons externe IP-adres te ontdekken, moeten we het naar een DNS-server verwijzen. We gebruiken de OpenDNS-server, die wordt geleverd door Cisco.

We moeten de naam specificeren van de DNS-server die we willen gebruiken, voorafgegaan door een apenstaartje “@”. We moeten ook het recordtype noemen dat we willen ophalen. In dit geval is het ‘mijnip’. De +short optie zorgt ervoor dat we een beknopte reactie krijgen, en geen uitgebreide.

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

Een extern IP-adres ophalen van een DNS-server met de opdracht dig

Deze keer wordt er achter ons IP-adres een teken voor een nieuwe regel afgedrukt. Zoals we zullen zien, wordt dit afgedrukt na de IP-adresstring, het is geen integraal onderdeel van de string zelf.

Deze gebruiken in een script

Er zijn veel redenen waarom u uw externe IP-adres vanuit een script wilt weten. Misschien heb je een script dat in de gaten houdt of je externe IP-adres is gewijzigd en je daarvan op de hoogte stelt. Of misschien stelt een server zijn klanten op de hoogte wanneer zijn adres verandert. Wat je redenen ook zijn, we kunnen de commando’s die we op de commandoregel hebben gebruikt vrij eenvoudig in een script implementeren.

Om ons externe IP-adres op te halen en toe te wijzen aan een variabele, hoeven we alleen de opdracht in een opdrachtvervanging te plaatsen, $(...) en wijs het toe aan een variabele, zoals deze:

variable=$(...)

De opdracht tussen haakjes wordt uitgevoerd en de geretourneerde waarde wordt vervangen door de expressie. In dit voorbeeld wordt de opdracht vereenvoudigd tot “variabele=retourwaarde”.

Hier staat het in een script. We hebben de toegevoegd -s (stille) optie voor de curl commando om te voorkomen dat het de voortgang van het ophalen van gegevens rapporteert.

#!/bin/bash

extaddr=$(curl -s ifconfig.me)

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

Kopieer dit script naar een editor en sla het op als “getex1.sh”, en maak het uitvoerbaar met de chmod opdracht.

chmod +x getex1.sh

Een script uitvoerbaar maken met chmod

Laten we het script uitvoeren en kijken wat we krijgen.

./getex1.sh

Het getex1.sh-script uitvoeren

Om hetzelfde te doen met de robuustere optie om een ​​DNS-server te gebruiken in plaats van een website, hoeven we alleen maar de curl commando met de dig een.

#!/bin/bash

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

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

Sla dit op als script “getex2.sh” en maak het uitvoerbaar met chmod.

chmod +x getex2.sh

Een script uitvoerbaar maken met chmod

Laten we dit script uitvoeren.

./getex2.sh

Het getex2.sh-script uitvoeren

We kunnen aan de uitvoer van de twee scripts zien dat ondanks het commando dig door een newline-teken op de opdrachtregel af te drukken, wordt er in het script geen newline toegevoegd aan het extaddr variabel.

Ga voor betrouwbaarheid

Het is altijd veiliger om een ​​erkende service te gebruiken die een goede reputatie heeft en een voorspelbaar uitvoerformaat heeft dan om een ​​”niet-officiële” website te gebruiken. Net als bij alles op internet, moet je goed kijken van wie je je informatie haalt.’

Nieuwste artikelen

spot_img

Related Stories

Leave A Reply

Vul alstublieft uw commentaar in!
Vul hier uw naam in