Како да ја добиете вашата јавна IP адреса во скрипта за Линукс Баш


Резиме: Можете да ја добиете вашата надворешна IP адреса од веб-локација со командата curl како „curl -s ifconfig.me“. Сепак, веб-локациите можат да се променат. За посигурен одговор, користете ја командата dig наместо како „dig @resolver1.opendns.com myip.opendns.com +short“ за да ја добиете вашата IP адреса од сервер DNS.

Ќе ви треба вашата надворешна IP адреса ако сакате далечински да се поврзете со вашиот компјутер. Рачното наоѓање е лесно, но еве како да го најдете од скрипта за Linux.

Внатрешни и надворешни IP адреси

Адресите на Интернет протоколот се користат за да се идентификуваат уредите на мрежата. Тие се единствена ознака на мрежата, доделена на еден уред. Ако друг уред сака да испрати податоци на тој уред, може да го стори тоа користејќи ја неговата IP адреса.

Вашиот широкопојасен модем има вграден мрежен рутер кој го насочува мрежниот сообраќај околу мрежата од уред до уред. Тоа е, исто така, локалната власт која доделува IP адреси на уредите кога ќе се приклучат на мрежата. Исто така, одржува табела со имиња на мрежи и IP адреси. Ова ви овозможува да им дадете значајни имиња на компјутерите на вашата мрежа, бидејќи — за луѓето — имињата се полесни за работа отколку списоците со броеви.

Уредите на интернет исто така имаат IP адреса. Некои од нив имаат и имиња, како што се веб-страниците. Давателите на услуги за име на домен бараат имиња на домени на веб-локации и автоматски ги заменуваат за IP адреси.

Вашиот широкопојасен модем добива своја сопствена интернет адреса или надворешна IP адреса од вашиот давател на интернет услуги (ISP). Без оглед на бројот на уреди што може да ги имате во вашиот дом што се поврзани на интернет, нивниот комбиниран сообраќај оди преку таа единствена IP адреса.

Ако сте надвор од градот и сакате да се поврзете на услуга што ја имате на еден од компјутерите во вашиот дом, ќе треба да ја користите вашата надворешна IP адреса за да го направите тоа. Вашиот рутер ќе треба да се постави за да го насочи вашето барање за поврзување до соодветниот уред во вашиот дом, се разбира.

Освен ако не плаќате малку дополнително на вашиот интернет провајдер секој месец за статичка IP адреса, вашата надворешна IP адреса може да се менува од време на време. Рестартирањето на вашиот широкопојасен модем може да резултира со добивање на друга надворешна IP адреса. Значи, ако треба да ја знаете вашата надворешна IP адреса, не можете само еднаш да ја проверите и да ја зачувате. Ќе треба периодично да одредувате што е тоа.

Наоѓање на вашата надворешна IP адреса

Да ја откриете вашата надворешна IP адреса значи да разговарате со нешто што е надвор од вашата мрежа. Со други зборови, пристап до нешто на интернет што може да ни ги даде информациите што ги сакаме. Треба да ѕирнеме во празнината и да видиме што ни гледа назад. А потоа побарајте ја нашата надворешна адреса.

Постојат два начини на кои можеме да го направиме ова. Еден начин вклучува веб-страници. Има многу веб-локации кои ќе ви покажат која е вашата надворешна IP адреса, како и еден куп други информации. Можете да пристапите до нив во вашиот прелистувач или да користите алатка за командна линија, како што е curl која може да прави барања за HTTPS.

Другиот начин е да користите посветена команда како dig. Командата dig ги испрашува DNS серверите за да добие информации.

Користење на прелистувач

Се разбира, користењето прелистувач не е начин погоден за скрипти за да се добие вашата надворешна IP адреса. Но, гледањето на веб-локација што ја обезбедува таа услуга може да ни даде корисни информации. Порано  го препорачувавме ip4.me, но страницата не е ажурирана на HTTPS. Сè уште го користи постариот, несигурен HTTP. Веб-страницата сè уште работи, но сега има подобри алтернативи.

Сајтот ifconfig.me обезбедува добар сет на информации.

Ова ја известува нашата надворешна IP адреса како 178.238.11.140. Скролувајќи надолу низ веб-страницата, ќе најдете листа на команди што можете да ги користите за да добиете информации од страницата.

Сите примери што ги даваат користат curl за да ја испрашуваат страницата. Значи, ајде да погледнеме во користењето на curl.

Користење на навивам

На нашите машини за тестирање, Fedora 37 веќе имаше инсталирано curl. Требаше да го инсталираме на нашите Ubuntu и Manjaro компјутери.

За да го инсталирате на Ubuntu, напишете:

sudo apt install curl

Командата на Манџаро е:

sudo pacman -S curl

Можеме да го пробаме ова со првата команда наведена на веб-страницата ifconfig.me.

curl ifconfig.me

Нашата надворешна IP адреса е преземена и прикажана во терминалниот прозорец. Излезот е голи коски. Нема ни знак за нова линија отпечатен по низата. Командната линија е поставена токму наспроти IP адресата.

Оваа команда работи бидејќи враќањето на IP адресата е стандардното дејство на веб-локацијата. Ако стандардното дејство некогаш се промени, може да ни биде вратен поинаков резултат. За да го задоволиме ова, можеме да наведеме дека ја бараме нашата IP адреса со додавање на идентификаторот „ip“ на URL-то.

curl ifconfig.me/ip

Ова ја враќа IP адресата како порано.

Ова го илустрира проблемот со користење на веб-локација како извор на вашата IP адреса. Веб-страниците може да се затворат или да го променат начинот на работа или форматот на вратените информации. Овие промени ќе направат скриптите кои зависат од овие локации или да пропаднат или да се однесуваат непредвидливо.

Користењето на реномиран и доверлив ресурс како DNS сервер е поцврст начин за добивање на вашата надворешна IP адреса. За да побараме DNS сервер, треба да ја користиме командата dig.

Користење на командата dig

Овој пат, dig беше инсталиран на Fedora и Ubuntu, а ние требаше да го инсталираме само на Manjaro.

Командата е вообичаената команда pacman, така што нема изненадувања, но името на пакетот не е она што може да го очекувате.

sudo pacman -S bind-tools

За да користиме dig за да ја откриеме нашата надворешна IP адреса, треба да ја насочиме кон DNS-сервер. Го користиме серверот OpenDNS, кој е обезбеден од Cisco.

Треба да го наведеме името на DNS-серверот што сакаме да го користиме, а пред него стои знакот „@“. Исто така, треба да го именуваме типот на запис што сакаме да го вратиме. Во овој случај тоа е „myip“. Опцијата +short осигурува дека ќе добиеме краток одговор, а не опширен.

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

Овој пат, нашата IP адреса има знак за нова линија испечатен после неа. Како што ќе видиме, ова се печати по низата IP адреса, не е составен дел од самата низа.

Користење на овие во скрипта

Постојат многу причини зошто можеби сакате да ја знаете вашата надворешна IP адреса од внатрешноста на скриптата. Можеби имате скрипта што следи дали вашата надворешна IP адреса се променила и ве известува кога тоа ќе се случи. Или можеби серверот ги известува своите клиенти кога неговата адреса се менува. Без оглед на вашите причини, можеме лесно да ги имплементираме командите што ги користевме на командната линија во скрипта.

За да ја вратиме нашата надворешна IP адреса и да ја доделиме на променлива, треба само да ја завиткаме командата во замена за команда, $ (...) и да ја доделиме на променлива, како оваа :

variable=$(...)

Наредбата во заградите се извршува и повратната вредност се заменува со изразот. Во овој пример, командата е поедноставена на „променлива=повратна вредност“.

Еве го во сценарио. Ја додадовме опцијата -s (тивка) на командата curl за да ја спречиме да известува за напредокот на пребарувањето на податоците.

#!/bin/bash

extaddr=$(curl -s ifconfig.me)

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

Копирајте ја оваа скрипта во уредник и зачувајте ја како „getex1.sh“ и направете ја извршна со командата chmod.

chmod +x getex1.sh

Ајде да го извршиме сценариото и да видиме што добиваме.

./getex1.sh

За да го сториме истото со поцврстата опција за користење на DNS сервер наместо веб-локација, сè што треба да направиме е да ја замениме командата curl со онаа dig.

#!/bin/bash

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

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

Зачувајте го ова како скрипта „getex2.sh“ и направете ја извршна со chmod.

chmod +x getex2.sh

Ајде да ја извршиме оваа скрипта.

./getex2.sh

Можеме да видиме од излезот на двете скрипти дека и покрај командата dig што печати знак од нова линија на командната линија, во скриптата нема додадена нова линија во променливата extaddr .

Одете за сигурност

Секогаш е побезбедно да се користи призната услуга која е реномирана и има предвидлив излезен формат отколку да користите „неофицијална“ веб-локација. Како и сè друго на интернет, добро погледнете од кого ги добивате вашите информации“.