Cum pot rezolva un nume de gazdă la o adresă IP într-un script Bash?

Care este cel mai concis mod de a rezolva un nume de gazdă la o adresă IP într-un script Bash? Utilizez Arch Linux .

Comentarii

  • Rușine că răspunsul getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname> este undeva acolo jos, lângă fund. ‘ este cel mai simplu, nu necesită pachete suplimentare și este mai ușor de analizat și dintr-un script Bash.
  • @ 0xC0000022L: Noua rușine este că acest răspuns sugerează getent hosts somehost, când rulează acest în timp ce este pe somehost va produce o adresă IPv6 , care este diferită de modul în care majoritatea celorlalte instrumente (ping, ssh cel puțin) rezolvă nume și rupe unele lucruri. Utilizați ahosts în loc de hosts.
  • @j_random_hacker: cine vă împiedică să solicitați în mod specific IPv4 (ahostsv4) sau adrese IPv6 (ahostsv6)? Personal nu găsesc nimic în neregulă cu solicitarea nespecifică de returnare a IPv6. Codul dvs. ar trebui să fie pregătit. IPv6 este disponibil de mai bine de 20 de ani acum.
  • @ 0xC0000022L: Nimeni ” nu mă ține ” de la făcând asta, dar răspunsul sugerează în mod specific hosts, iar până acum 4 persoane au votat comentariul vinc17 ‘ care exprimă durerea cauzată de ” brusc IPv6 „. Pregătirea pentru IPv6 nu este întotdeauna problema: multe programe au nevoie de o modalitate de a determina dacă două nume / adrese se referă la aceeași gazdă. Aceștia pot folosi fie potrivirea simplă a șirurilor, fie trebuie să știe multe despre rețea pentru a găsi răspunsul ” adevărat „. Acesta din urmă este un câmp minat, atât de multe programe și sisteme terță parte – pe care nu le controlez – le folosesc pe primul.

Răspuns

Puteți utiliza getent, care vine cu glibc (deci aproape sigur îl aveți pe Linux) . Acest lucru se rezolvă folosind gethostbyaddr / gethostbyname2, și astfel se va verifica și /etc/hosts / NIS / etc:

getent hosts unix.stackexchange.com | awk "{ print $1 }" 

Sau, după cum a spus Heinzi mai jos, puteți utiliza dig cu argumentul +short (interogă direct serverele DNS, nu privește /etc/hosts / NSS / etc):

dig +short unix.stackexchange.com 

Dacă dig +short nu este disponibil, dintre următoarele ar trebui să funcționeze. Toate aceste interogări DNS direct și ignoră alte mijloace de rezoluție:

host unix.stackexchange.com | awk "/has address/ { print $4 }" nslookup unix.stackexchange.com | awk "/^Address: / { print $2 }" dig unix.stackexchange.com | awk "/^;; ANSWER SECTION:$/ { getline ; print $5 }" 

Dacă doriți să imprimați doar un IP, adăugați pentru fluxul de lucru al awk.

dig +short unix.stackexchange.com | awk "{ print ; exit }" getent hosts unix.stackexchange.com | awk "{ print $1 ; exit }" host unix.stackexchange.com | awk "/has address/ { print $4 ; exit }" nslookup unix.stackexchange.com | awk "/^Address: / { print $2 ; exit }" dig unix.stackexchange.com | awk "/^;; ANSWER SECTION:$/ { getline ; print $5 ; exit }" 

Comentarii

  • În mod implicit, utilizarea dig funcționează numai cu ipv4, unde gazda oferă atât răspunsuri ipv4, cât și ipv6. Acest lucru ar putea fi neașteptat. Puteți încerca host www.google.com, dig +short www.google.com, host ipv6.google.com, dig +short ipv6.google.com, host www.facebook.com , dig +short www.facebook.com.
  • DIG nu funcționează, dacă este un CNAME nu va returna adresa IP.
  • Uneori, host poate fi expirat și nu returnează nimic. Pentru unele domenii, dig +short poate returna aliasul domeniului în prima linie. Deci, pentru a vă asigura că ieșirea este un IPv4 adresa, utilizați dig +short example.com | grep -Eo '[0-9\.]{7,15}' | head -1.
  • Utilizarea getent hosts <host> este incorectă, ca și pentru instan se poate da o adresă IPv6 în timp ce IPv6 nu funcționează ‘. Soluția corectă este să utilizați getent ahosts <host> pentru a încerca atât IPv6, cât și IPv4, dacă este necesar.
  • Merită menționat: host, dig și nslookup pare să vorbească direct cu serverele listate în resolv.conf, întrucât ” gazdele getent ” respectă atât fișierul gazdelor locale, cât și cache-ul la nivel de bibliotecă (cum ar fi nscd) dacă este activat .

Răspuns

Cu host din pachet dnsutils :

$ host unix.stackexchange.com unix.stackexchange.com has address 64.34.119.12 

( Corectat numele pachetului conform comentariilor. Ca notă, alte distribuții au host în diferite pachete: Debian / Ubuntu bind9-host , openSUSE bind-utils , Frugalware bind .)

Comentarii

  • Consultați intrarea resolverip de mai jos dacă trebuie să rezolvați ceva care nu este în DNS (de exemplu / etc / hosts)
  • Rețineți că host returnează uneori ieșirea pe mai multe linii (în cazul redirecționărilor), ‘ veți dori host unix.stackexchange.com | tail -n1 dacă doriți doar linia cu adresa IP.
  • Există mai multe versiuni ale ” gazdă ” cu diferite formate de ieșire. De exemplu. majoritatea sistemelor par să aibă versiunea BIND9, dar serverul meu Ubuntu 10.04 LTS are o versiune complet diferită cumva ..
  • dacă nu aveți ‘ nu aveți host sau dig instalat puteți utiliza ping în loc, care este întotdeauna disponibil: ping unix.stackexchange.com -c 1 -q 2>&1 | grep -Po "(\d{1,3}\.){3}\d{1,3}" acest lucru nu are nevoie de pachete suplimentare se instalează pe majoritatea jocurilor Unix / Linux.
  • Acest răspuns merită un vot negativ serios. host este un instrument DNS (similar cu nslookup), deci caută numai gazde în DNS, nu în ex. /etc/hosts. Deci, este NU un răspuns la întrebarea OP ‘.

Răspuns

Am pe instrumentul meu un instrument care pare să facă treaba. Pagina manuală arată că pare să vină cu mysql … Iată cum îl puteți folosi:

resolveip -s unix.stackexchange.com 64.34.119.12 

Valoarea returnată a acestui instrument este diferită de 0 dacă numele gazdei nu poate fi rezolvat:

resolveip -s unix.stackexchange.coma resolveip: Unable to find hostid for "unix.stackexchange.coma": host not found exit 2 

UPDATE Pe fedora, vine cu mysql-server:

yum provides "*/resolveip" mysql-server-5.5.10-2.fc15.x86_64 : The MySQL server and related files Dépôt : fedora Correspondance depuis : Nom de fichier : /usr/bin/resolveip 

Cred că ar crea o dependență ciudată pentru scriptul tău …

Comentarii

  • Aceasta pare a fi singura soluție de aici care folosește versiunea OS ‘ în rezolvare – deci funcționează pentru / etc / hosts, precum și DNS.
  • getent, așa cum este detaliat în celălalt răspuns, se uită și la / etc / hosts și vine cu glibc, deci nu are dependențe de un sistem Linux.
  • Nu aș folosi resolverip deoarece creați o dependență de un alt pachet. getent este instalat în mod implicit. host, nslookup și dig sunt toate în pachete opționale. Cu siguranță folosiți getent într-un script.
  • îmi place acest răspuns, dar nu ‘ nu returnează ipv6

Răspuns

Următoarea comandă care folosește dig vă permite să citiți rezultatul direct fără sed / awk / etc. magie:

$ dig +short unix.stackexchange.com 64.34.119.12 

dig este de asemenea inclus în dnsutils pachet.


Notă : dig are o valoare returnată de 0, chiar dacă numele nu a putut fi rezolvat. Astfel, ar trebui să verificați dacă ieșirea este goală în loc să verificați valoarea returnată:

hostname=unix.stackexchange.com ip=`dig +short $hostname` if [ -n "$ip" ]; then echo IP: $ip else echo Could not resolve hostname. fi 

Nota 2 : Dacă un nume de gazdă are mai multe adrese IP (încercați debian.org, de exemplu), toate vor fi returnată. Această „problemă” afectează până acum toate instrumentele menționate în această întrebare:

Comentarii

  • Rețineți că dacă un domeniu are o intrare CNAME domeniul său poate fi tipărit în prima linie în loc de o adresă IP.

Răspuns

getent hosts unix.stackexchange.com | cut -d" " -f1 

Comentarii

  • Luați în considerare și ahosts, ahostsv4, ahostsv6 cu getent.
  • cut nu va fi pentru getent ‘ s, care utilizează \t pentru a separa coloanele. Acesta este cazul Solaris.
  • @ceving: Pe Sola ris s-ar putea să trebuiască să rulați cut fără -d (implicit la \t ca delimitator). Pe Linux, ‘ este spațiu, astfel linia de mai sus funcționează.

Răspuns

Soluțiile date până acum funcționează mai ales în cazurile mai simple: numele gazdei se rezolvă direct la o singură adresă IPv4. Acesta ar putea fi singurul caz în care trebuie să rezolvați numele gazdei, dar dacă nu, mai jos este o discuție cu privire la unele cazuri pe care ar trebui să le gestionați.

Chris Down și Heinzi au discutat pe scurt cazul în care numele gazdei rezolvă la mai multe adrese IP. În acest caz (și altele de mai jos), scriptarea de bază în ipoteza că un nume de gazdă se rezolvă direct la o singură adresă IP se poate rupe. Mai jos, un exemplu cu un nume de gazdă care se rezolvă la mai mult de o singură adresă IP:

$ host www.l.google.com www.l.google.com has address 209.85.148.147 www.l.google.com has address 209.85.148.103 www.l.google.com has address 209.85.148.99 www.l.google.com has address 209.85.148.106 www.l.google.com has address 209.85.148.105 www.l.google.com has address 209.85.148.104 

Dar ce este www.l.google.com ? Aici trebuie introdus cazul alias . Să verificăm exemplul de mai jos:

$ host www.google.com www.google.com is an alias for www.l.google.com. www.l.google.com has address 74.125.39.103 www.l.google.com has address 74.125.39.147 www.l.google.com has address 74.125.39.105 www.l.google.com has address 74.125.39.99 www.l.google.com has address 74.125.39.106 www.l.google.com has address 74.125.39.104 

Deci www.google.com nu se rezolvă direct la adresele IP, ci la un alias care se rezolvă el însuși la mai multe adrese IP. Pentru mai multe informații despre aliasuri, verificați aici . Desigur, este posibil cazul în care un alias are o singură adresă IP. , după cum se arată mai jos:

$ host g.www.ms.akadns.net g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net. lb1.www.ms.akadns.net has address 207.46.19.190 

Dar se pot înlătura aliasurile?Răspunsul este da:

$ host www.microsoft.com www.microsoft.com is an alias for toggle.www.ms.akadns.net. toggle.www.ms.akadns.net is an alias for g.www.ms.akadns.net. g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net. lb1.www.ms.akadns.net has address 207.46.19.254 $ host www.google.fr www.google.fr is an alias for www.google.com. www.google.com is an alias for www.l.google.com. www.l.google.com has address 74.125.39.147 www.l.google.com has address 74.125.39.103 www.l.google.com has address 74.125.39.99 www.l.google.com has address 74.125.39.106 www.l.google.com has address 74.125.39.104 www.l.google.com has address 74.125.39.105 

Nu am găsit niciun exemplu în care un nume de gazdă se rezolvă la un alias care nu se rezolvă la o adresă IP, dar cred că caz poate apărea.

Mai mult decât mai multe adrese IP și pseudonime, mai există alte cazuri speciale … ce zici de IPv6? Puteți încerca:

$ host ipv6.google.com ipv6.google.com is an alias for ipv6.l.google.com. ipv6.l.google.com has IPv6 address 2a00:1450:8007::68 

Unde numele gazdei ipv6.google.com este un nume de gazdă numai pentru IPv6. Ce se întâmplă cu numele de gazdă dual-stack:

$ host www.facebook.com www.facebook.com has address 66.220.153.15 www.facebook.com has IPv6 address 2620:0:1c08:4000:face:b00c:: 

Din nou despre IPv6, dacă gazda dvs. este numai IPv4, puteți rezolva în continuare adresele IPv6 (testate doar pe un IPv4 WinXP și cu ipv6.google.com, îl puteți încerca pe Linux). În acest caz, rezoluția reușește, dar un ping eșuează cu un mesaj de eroare de gazdă necunoscut . Acesta ar putea fi un caz în care scripturile dvs. nu reușesc.

Sper că aceste remarci au fost utile.

Comentarii

  • Ce grozav completează răspunsul acceptat, arătând toate cazurile marginale cu care s-ar putea dori să se ocupe în scripting. Versiunea mea host nici nu menționează ” are adresa ” pentru casetele mele.

Răspuns

Pentru a evita problema cu pseudonimele și pentru a obține întotdeauna o singură adresă IP gata de utilizare:

python -c "import socket; print socket.gethostbyname("www.example.com")" 

Comentarii

Răspuns

ping -q -c 1 -t 1 your_host_here | grep PING | sed -e "s/).*//" | sed -e "s/.*(//" 

funcționează fără dependențe de alte sisteme (și pentru gazde specificate în / etc / hosts)

Comentarii

  • Am nevoie de ping, deoarece am nevoie de valoarea din fișierul hosts, dar modelul sed se analizează corect, dar acest lucru a funcționat ping – q -c 1 -t 1 gazdă_aici | grep PING | sed -e ” s / ^ [^ (] * [(] // ” | sed -e ” s / [)]. * $ // ”
  • Pentru a rezolva ceva din rețeaua mea de domiciliu, cum ar fi myhostname.local, acest lucru funcționează pentru acesta este cel mai bun răspuns.
  • Pot sugera și acest lucru: ping -q -c 1 -t 1 bahface.local | grep -m 1 PING | cut -d "(" -f2 | cut -d ")" -f1
  • getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname> funcționează pentru declarații și în /etc/hosts … și ‘ este instrumentul go-to-tool pentru toate tipurile de baze de date de sistem (passwd, grup, pseudonime, servicii).

Răspuns

Simplu, dar util :

  1. getent ahostsv4 www.google.de | grep STREAM | head -n 1 | cut -d " " -f 1
  2. getent ahostsv6 www.google.de | grep STREAM | head -n 1 | cut -d " " -f 1
  3. getent hosts google.de | head -n 1 | cut -d " " -f 1

Toate comenzile vor rezolva o adresă IP dacă gazda există încă. Dacă gazda indică un CNAME, va primi și IP în acel case.

Prima comandă returnează adresa IPv4 rezolvată.

A doua comandă returnează res olv adresă IPv6.

A treia comandă va returna adresa preferată a proprietarului, care poate fi o adresă IPv4 sau o adresă IPv6.

Comentarii

  • De departe cel mai simplu. Și este disponibil în mod implicit. Nu ca host care necesită instalarea bindutils

Răspuns

Iată o ușoară variație a abordării ping care ia în considerare „gazda necunoscută” (prin canalizare prin stderr) și folosește tr pentru a evita utilizarea sed regexps:

ping -c1 -t1 -W0 www.example.com 2>&1 | tr -d "():" | awk "/^PING/{print $3}" 

este important să captați valoarea de ieșire, apoi vor funcționa următoarele (deși mai puțin elegante):

ping -c1 -t1 -W0 www.example.com &>/dev/null && ping -c1 -t1 -W0 www.example.com 2>&1 | tr -d "():" | awk "/^PING/{print $3}" 

Comentarii

  • Îmi place această soluție, deoarece funcționează fără alte instrumente suplimentare.

Răspuns

Pentru a completa răspunsul lui Chris Down și pentru a adresa comentariile jfgagne despre aliasuri (posibil înlănțuite), iată o soluție care:

  • ia în considerare mai multe adrese IP
  • ia în considerare unul sau mai multe aliasuri (CNAME)
  • nu interogă fișierul /etc/hosts ( în cazul meu nu am vrut); pentru a-l interoga, soluția python dbernt este perfectă)
  • nu folosește awk / sed

    dig +short www.alias.com | grep -v "\.$" | head -n 1 

Returnează întotdeauna prima adresă IP sau tringul gol dacă nu este rezolvat. cu versiunea dig:

 $ dig -v DiG 9.8.1-P1 

Comentarii

  • Mulțumesc, alte răspunsuri presupun că ” dig + scurt ” întotdeauna returnează o singură adresă IP. Nu ‘ contabilizau CNAME.

Răspuns

 php -r "echo gethostbyname("unix.stackexchange.com");" 

Comentarii

  • funcționează, dar necesită instalarea php-ului pe terminalul dvs.
  • poate fi util pe un container tipic de andocare php unde ” gazdă „, ” dig ” etc. nu sunt disponibile

Răspuns

Aș fi dorit să adaug acest lucru ca un comentariu la Andrew McGregor Re: ping. Cu toate acestea, nu mă va lăsa, așa că trebuie să adaug acest lucru ca un alt răspuns. (Dacă cineva îl poate muta într-un comentariu, nu ezitați să.)

Aceasta este o altă variantă, folosind doar ping și grep :

ping -q -c1 -t1 your_host_here | grep -Eo "([0-9]+\.?){4}" 

grep -E pentru expresie regulată extinsă și grep -o la returnează numai partea potrivită. regexp în sine caută una sau mai multe cifre ([0-9]+) și opțional un punct (\.?) de patru ori ( {4})

Răspuns

Puteți utiliza host:

hostname=example.org # strips the IP IP=$( host ${hostname} | sed -e "s/.*\ //" ) # checks for errors if [ $? -ne 0 ] ; then echo "Error: cannot resolve ${hostname}" 1>&2 exit 1; fi 

Răspuns

aici „rețeta Bash Am gătit folosind alte răspunsuri populare – mai întâi încearcă /etc/hosts, apoi revin la nslookup:

 resolveip(){ local host="$1" if [ -z "$host" ] then return 1 else local ip=$( getent hosts "$host" | awk "{print $1}" ) if [ -z "$ip" ] then ip=$( dig +short "$host" ) if [ -z "$ip" ] then echo "unable to resolve "$host"" >&2 return 1 else echo "$ip" return 0 fi else echo "$ip" return 0 fi fi }  

Comentarii

  • Pentru a fi clar, getent hosts isn ‘ nu este doar o căutare în / etc / hosts – este ‘ un apel complet de rezolvare DNS către gethostbyaddr (3) și ‘ este foarte puțin probabil să eșueze într-un caz în care dig va reuși. Consultați pagina manuală pentru getent .
  • @Stuart are dreptate – am ‘ am aflat mult de când am scris acest lucru și am simplificat prea mult o comandă puternică. getent rămâne preferatul meu, deși îmi place și dig +short

Răspuns

nmap -sP 192.168.178.0/24|grep YOUR_HOSTNAME|sed -n "s/.*[(]\([0-9\.]*\)[)].*/\1/p" 

a fost soluția pe care am găsit-o fără server DNS

Răspuns

Poate că nu este cel mai concis, dar pare a fi robust și eficient:

# $(get_host_dns_short "google.com") # # Outputs the IPv4 IP Address of a hostname, resolved by DNS. Returns 0 if DNS # responded successfully; 1 otherwise. Will mask error output. function get_host_dns_short() { ( set -o pipefail host -4 -W1 -t A "$1" 2>/dev/null | awk "/has address/ { print $NF; exit }" ) && return 0 || return 1 } 

Aceasta va genera un singur IPv4 IP, precum și returnarea 1 în caz de eșec, în timp ce mascați ieșirea stderr.

Puteți să o utilizați astfel:

GOOGLE_IP="$(get_host_dns_short "google.com")" if [[ $? -eq 0 ]]; then echo "Google"s IP is ${GOOGLE_IP}." else echo "Failed to resolve Google"s IP." fi 

IP-ul Google este 216.58.192.46.

Dacă doriți o adresă IPv6, înlocuiți -4 cu -6.

Răspundeți

dig +noall +answer +nocomments example.com | awk "{printf "%-36s\t%s\n", $1, $5 }"

Comentarii

  • Un anumit context în ce mod ar îmbunătăți acest răspuns față de cele deja existente fii grozav. De asemenea, vă rugăm să indentați comenzile cu 4 spații (cf. sintaxa de reducere).

Răspuns

dig este prea lent, nslookup este mult mai rapid

nslookup google.com | grep -Po "Address:\s*[0-9.]+" | tail -1 | sed -e "s/Address:\s*//g" 

Răspuns

1 linie rezolvă o listă a hostname

for LINE in `cat ~/Desktop/mylist`; do a=$(nslookup $LINE | awk "/^Address: / { print $1 }"); echo $a >> ~/Desktop/ip; done 

Răspuns

Fac asta tot timpul pe Mac care nu are getent. ping pare un hack. Aș dori să țin cont și de /etc/hosts.

Așadar, am scris un wrapper stupid pentru dns.lookup pentru dvs. care aveți instalat Node.js pentru a furniza o CLI:

$ npm install -g lookup-hostname $ lookup google.com 62.243.192.89 

Comentarii

  • 60% șanse de rupere înainte de a ajunge aproape de o hotărâre.
  • @dotbit ai putea elabora? ‘ am folosit acest săptămânal de la ‘ 17 și nu am avut niciodată probleme.
  • @Jensen, dar tu ‘ este singurul vreodată, ca întotdeauna. Ceilalți dintre noi, de obicei, se confruntă cu FAIL într-un fel sau altul și întotdeauna.
  • ” ca întotdeauna ” Ce vrei să spui cu asta? ” Restul dintre noi ” Cine ‘ este că ? ” rulați în FAIL ” Ce problemă specifică vedeți? Sunt ‘ curios.

Răspuns

Nu ” Nu știu cel mai simplu mod pentru un script bash, dar dacă doriți să rezolvați un nume de gazdă și să vedeți dacă gazda este activată, utilizați ping!

ping -a hostname -c 1 

Va ping gazda o dată și va rezolva numele gazdei la adresa IP.

$ ping -a www.google.com -c 1 PING www.google.com (216.58.211.132) 56(84) bytes of data. 64 bytes from arn09s10-in-f4.1e100.net (216.58.211.132): icmp_seq=1 ttl=54 time=1.51 ms 

Comentarii

  • este bine să folosiți ping, pentru că toată lumea îl are, dar trebuie să filtrați partea IP din ieșiri, dacă doriți să o utilizați într-un script.

Răspundeți

Da, există deja multe răspunsuri, dar lipsește o soluție care utilizează perl:

perl -MSocket -MNet::hostent -E "say inet_ntoa((gethost shift)->addr)" unix.stackexchange.com 

Într-un script bash ar putea fi folosit astfel:

#!/bin/bash ipaddr=$(perl -MSocket -MNet::hostent -E "say inet_ntoa((gethost shift)->addr)" unix.stackexchange.com) echo $ipaddr 

Modulele utilizate aici sunt module de bază, deci ar trebui să fie disponibile oriunde fără instalarea cu CPAN.

Comentarii

  • perl -MSocket -MNet::hostent -E 'say inet_ntoa((gethost shift)->addr)' unix.stackexchange.com 2>/dev/null este mult mai curat. dar nimeni în afară de noi doi nu folosește p ö rl, toți ceilalți folosesc scriptul Pascal, desigur.
  • De fapt, prefer să văd mesajele de eroare dacă există ceva merge prost. Can't call method "addr" on an undefined value nu este ‘ exact exact cel mai bun mesaj de eroare, dar poate oferi un indiciu despre problemă.

Răspuns

#!/bin/bash systemd-resolve RT.com -t A | awk "{ print $4 ; exit }" systemd-resolve unix.stackexchange.com -t A --legend=no | awk "{ print $4 ; exit }" resolveip -s RT.com dig +short RT.com host RT.com | awk "/has address/ { print $4 }" nslookup RT.com | awk "/^Address: / { print $2 }" ping -q -c 1 -t 1 RT.com | grep PING | sed -e "s/).*//" | sed -e "s/.*(//" ruby -rresolv -e " print Resolv.getaddress "RT.com" " python2 -c "import socket; print socket.gethostbyname("RT.com")" perl -MSocket -MNet::hostent -E "say inet_ntoa((gethost shift)->addr)" RT.com 2>/dev/null php -r "echo gethostbyname( "RT.com" );" echo " all do work for me - take your pick! " 

Comentarii

  • Versiunea ruby imprimă ghilimele în jurul adresei IP — probabil print ar trebui utilizat în loc de p.
  • thx, @Slaven Rezic și nu ezitați să votați. din nou, aici, în partea de jos, scriptul poate fi mai vizibil de fapt … 😉

Răspunde

host -t a cisco.com 

această comandă va afișa adresa IP (va reslove domeniul către IP)

Răspuns

În afară de soluția de mai sus, puteți traduce mai multe nume de gazdă în ip prin scriptul de mai jos, singura dependență este comanda „ping” în nucleul Unix:

getip(){ ping -c 1 -t 1 $1 | head -1 | cut -d " " -f 3 | tr -d "()" 2>&1 | tee >> /tmp/result.log & } getip "hostname.number1.net" getip "hostname.number2.net" getip "hostname.number3.net" getip "hostname.number4.net" getip "hostname.number5.net" getip "hostname.number6.net" getip "hostname.number7.net" getip "hostname.number8.net" 
$ cat /tmp/result.log ABC.DEF.GHI.XY1 ABC.DEF.GHI.XY2 ABC.DEF.GHI.XY3 ABC.DEF.GHI.XY4 ABC.DEF.GHI.XY5 ABC.DEF.GHI.XY6 ABC.DEF.GHI.XY7 ABC.DEF.GHI.XY8 

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *