Mi a legtömörebb módszer a hostnév feloldására egy IP-címre egy Bash-szkriptben? A következőt használom: Arch Linux .
Megjegyzések
Válasz
Használhatja a getent
alkalmazást, amely a glibc
melléklettel érkezik (tehát Linuxon szinte biztosan megvan) . Ez megoldódik a gethostbyaddr / gethostbyname2 használatával, és így ellenőrizni fogja a /etc/hosts
/ NIS / etc parancsot is:
getent hosts unix.stackexchange.com | awk "{ print $1 }"
Vagy, amint Heinzi alább elmondta, használhatja az dig
elemet a +short
argumentummal (a DNS-kiszolgálókat közvetlenül kérdezi, nem a /etc/hosts
/ NSS / etc):
dig +short unix.stackexchange.com
Ha a dig +short
nem érhető el, bármelyik az alábbiaknak működnie kell. Mindezek közvetlenül lekérdezik a DNS-t, és figyelmen kívül hagyják a felbontás egyéb módjait:
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 }"
Ha csak egy IP-t szeretne kinyomtatni, adja hozzá a exit
parancs a awk
” munkafolyamatához.
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 }"
Megjegyzések
- Alapértelmezés szerint a dig használata csak az ipv4 esetén működik, ahol a gazdagép mind az ipv4, mind az ipv6 válaszokat megadja. Ez váratlan lehet. Megpróbálhatja a következőt:
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
. - A DIG nem működik, ha CNAME, akkor nem adja vissza az IP-t.
- Néha
host
időtúllépés lehet, és semmit sem ad vissza. Bizonyos tartományoknál azdig +short
tartományi álnevet adhat vissza az első sorba. Tehát annak biztosítása érdekében, hogy a kimenet IPv4 legyen címet, használja a következőt:dig +short example.com | grep -Eo '[0-9\.]{7,15}' | head -1
. - A
getent hosts <host>
használata helytelen, mint az instan esetében Ez megadhat IPv6-címet, miközben az IPv6 ‘ nem működik. A helyes megoldás azgetent ahosts <host>
használata, ha szükséges, mind az IPv6, mind az IPv4 kipróbálására. - Megemlítendő: Úgy tűnik, hogy a host, dig és az nslookup közvetlenül beszél a felsorolt szerverekkel a resolv.conf fájlban, míg a ” getent hosts ” tiszteletben tartja mind a helyi gazdagépfájlt, mind pedig a könyvtárszintű gyorsítótárat (például nscd), ha engedélyezve van .
Válasz
A következővel: host
= “42fabf6d41”>
dnsutils csomag:
$ host unix.stackexchange.com unix.stackexchange.com has address 64.34.119.12
( Javítva csomag neve a megjegyzések szerint. Megjegyzésként más disztribúcióknak host
vannak különböző csomagokban: Debian / Ubuntu bind9-host , openSUSE bind-utils , Frugalware bind .)
Megjegyzések
- Lásd az alábbi resolip bejegyzést, ha olyan dolgot szeretne megoldani, amely nincs a DNS-ben (pl. / Etc / hosts)
- Ne feledje, hogy div id = “fc95fabfa4”> néha többsoros kimenetet ad vissza (átirányítások esetén), ‘ ll
host unix.stackexchange.com | tail -n1
ha csak az IP címmel rendelkező sort akarja. - A ” host ” többféle kimeneti formátummal rendelkezik. Például. úgy tűnik, hogy a legtöbb rendszer BIND9 verzióval rendelkezik, de az Ubuntu 10.04 LTS szerveremnek valamilyen teljesen más verziója van.
- ha nincs ‘ nincs
host
vagydig
telepítve használhatja a pinget, amely mindig elérhető:ping unix.stackexchange.com -c 1 -q 2>&1 | grep -Po "(\d{1,3}\.){3}\d{1,3}"
ehhez nincs szükség extra csomagok települnek a legtöbb Unix / Linux mérkőzésre. - Ez a válasz komoly visszhangot érdemel. Az
host
egy DNS-eszköz (hasonló anslookup
-hez), így csak a DNS-ben keresi a gazdagépeket, pl./etc/hosts
. Tehát NEM válasz az OP ‘ kérdésre.
Válasz
Van egy eszköz a gépemen, amely úgy tűnik, hogy elvégzi a munkát. A man oldal azt mutatja, hogy úgy tűnik, hogy a mysql-lel érkezik … Így használhatja:
resolveip -s unix.stackexchange.com 64.34.119.12
Az eszköz visszatérési értéke eltér a 0-tól ha a hosztnév nem oldható fel:
resolveip -s unix.stackexchange.coma resolveip: Unable to find hostid for "unix.stackexchange.coma": host not found exit 2
UPDATE A fedorán a mysql-server jön:
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
Gondolom, furcsa függőséget okozna a szkriptedben …
Megjegyzések
- Úgy tűnik, ez az egyetlen megoldás itt, amely az OS ‘ rendszer beépítését használja a resolverben – így működik Az / etc / hosts, valamint a DNS.
-
getent
, amint azt a másik válasz részletezi, az / etc / hosts-ra is kitekint, és a glibc-vel együtt érkezik, tehát nincs függősége egy Linux rendszertől. - Nem használnám a resolipet, mivel egy másik csomagtól hoz létre függőséget. A getent alapértelmezés szerint telepítve van. A host, az nslookup és a dig opcionális csomagokban vannak. Mindenképpen használja a getent parancsfájlt.
- tetszik ez a válasz, de nem ‘ nem adja vissza az ipv6
Válasz
A következő parancs, amely a dig
parancsot használja, lehetővé teszi az eredmény közvetlen olvasását sed / awk / stb. Nélkül. varázslat:
$ dig +short unix.stackexchange.com 64.34.119.12
dig
is szerepel a dnsutils
csomag.
Megjegyzés : dig
visszatérési értéke 0
, még akkor is, ha a nevet nem sikerült feloldani. Ezért a visszatérési érték ellenőrzése helyett ellenőriznie kell, hogy a kimenet üres-e:
hostname=unix.stackexchange.com ip=`dig +short $hostname` if [ -n "$ip" ]; then echo IP: $ip else echo Could not resolve hostname. fi
2. megjegyzés : Ha a gazdagépnévnek több IP-címe van (próbálkozzon például debian.org
), akkor mindegyik Ez a “probléma” a kérdésben eddig említett összes eszközt érinti:
Megjegyzések
- Ne feledje, hogy ha egy domain rendelkezik CNAME bejegyzéssel tartománya IP-cím helyett az első sorba nyomtatható.
Válasz
getent hosts unix.stackexchange.com | cut -d" " -f1
Megjegyzések
- Fontolja meg a következőt:
ahosts
,ahostsv4
,ahostsv6
ésgetent
. -
cut
nem getent ‘ s, amelyek a\t
t használják oszlopok elkülönítésére. Ez a helyzet a Solaris esetében. - @ceving: Solán ris lehet, hogy
cut
-et-d
nélkül kell futtatnia (alapértelmezés szerint\t
mint elválasztó). Linuxon ‘ szóközökkel rendelkezik, így a fenti sor működik.
Válasz
Az eddig megadott megoldások többnyire egyszerűbb esetben működnek: a hosztnév közvetlenül egyetlen IPv4-címre bomlik. Ez lehet az egyetlen eset, amikor meg kell oldania a gazdagépneveket, de ha nem, akkor az alábbiakban bemutatunk néhány esetet, amelyeket esetleg kezelnie kell.
Chris Down és Heinzi röviden átbeszélte azt az esetet, amikor a gazdagépnév megoldódott több IP-címre. Ebben az esetben (és az alábbiakban felsoroltaknál) megszakadhat az alapvető szkriptelés, feltéve, hogy a hosztnév közvetlenül egyetlen IP-címre változik. Az alábbiakban egy példa több IP címet feloldó hosztnévre:
$ 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
De mi az a www.l.google.com
? Itt kell bevezetni a alias esetet. Ellenőrizzük az alábbi példát:
$ 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
Tehát www.google.com
nem közvetlenül az IP-címekre, hanem álnév, amely több IP-címre képes feloldódni. Az álnevekkel kapcsolatos további információkért ellenőrizze itt . Természetesen lehetséges az az eset is, amikor egy álnévnek egyetlen IP-címe van. , az alábbiak szerint:
$ 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
De az álnevek láncolhatók-e?A válasz igen:
$ 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
Nem találtam olyan példát, ahol a gazdagépnév egy álnévre bomlik, amely nem oldódik fel IP-címre, de azt hiszem, eset fordulhat elő.
Több IP-címen és álnéven kívül létezik más speciális eset is … mi van az IPv6-tal? Kipróbálhatja:
$ 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
Ahol a hosztnév ipv6.google.com
csak IPv6-alapú hosztnév. Mi a helyzet a kettős kötegű hosztnevekkel:
$ 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::
Ismételten az IPv6-ról, ha csak hosztja IPv4, akkor is megoldhatja az IPv6-címeket (csak IPv4-en tesztelt WinXP és az ipv6.google.com címen kipróbálhatod Linuxon). Ebben az esetben a felbontás sikeres, de a ping meghiúsul ismeretlen gazdagép hibaüzenettel . Ez lehet az eset, amikor a szkriptje nem sikerül.
Remélem, hogy ezek a megjegyzések hasznosak voltak.
Megjegyzések
- Milyen nagyszerű kiegészíti az elfogadott választ, bemutatva mindazokat az éles eseteket, amelyekkel érdemes foglalkozni a szkriptelés során. Az én verzióm
host
még azt sem állítja, hogy ” van-e ” címe a fiókokhoz.
Válasz
Az álnevekkel kapcsolatos problémák elkerülése és az egyetlen IP-cím mindig használatra kész:
python -c "import socket; print socket.gethostbyname("www.example.com")"
Megjegyzések
- Készítettem egy bash függvényt, amellyel betartottam a bashrc-t ebből a válaszból: gist.github.com/brycepg/ba117a37de53906dc8fcc312bd7d5fee
-
python3 -c 'import socket; print(socket.gethostbyname("www.example.com"))'
Válasz
ping -q -c 1 -t 1 your_host_here | grep PING | sed -e "s/).*//" | sed -e "s/.*(//"
függetlenül működik más rendszerektől (és az / etc / hosts fájlban megadott gazdagépeknél)
Megjegyzések
- A ping használatára szükségem van, mivel szükségem van a gazdagép fájl értékére, de a sed minta helyesen értelmezõdik, de ez a pinget bevált – q -c 1 -t 1 az ön_gazdája_itt | fogd PING | sed -e ” s / ^ [^ (] * [(] // ” | sed -e ” s / [)]. * $ // ”
- Az otthoni hálózaton található valamilyen probléma megoldása, például a myhostname.local, ez így működik nekem ez a legjobb válasz.
- Javasolhatom ezt is:
ping -q -c 1 -t 1 bahface.local | grep -m 1 PING | cut -d "(" -f2 | cut -d ")" -f1
-
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
a/etc/hosts
belüli deklarációkhoz is működik … és ez ‘ s a go-to-tool mindenféle rendszeradatbázishoz (passwd, group, álnevek, szolgáltatások).
Válasz
Egyszerű, de hasznos :
-
getent ahostsv4 www.google.de | grep STREAM | head -n 1 | cut -d " " -f 1
-
getent ahostsv6 www.google.de | grep STREAM | head -n 1 | cut -d " " -f 1
-
getent hosts google.de | head -n 1 | cut -d " " -f 1
Minden parancs felold egy IP-címet, ha a gazdagép még mindig létezik. Ha a gazdagép egy CNAME-re mutat, akkor az IP-t is megkapja eset.
Az első parancs a megoldott IPv4-címet adja vissza.
A második parancs a res-t adja vissza olved IPv6 cím.
A harmadik parancs visszaadja a tulajdonos által preferált címet, amely lehet IPv4 vagy IPv6 cím.
Megjegyzések
- Messze a legegyszerűbb. És alapértelmezés szerint elérhető. Nem olyan, mint
host
, amelyekhez telepíteni kell abindutils
Válasz
Íme a ping
megközelítés egy kis változata, amely figyelembe veszi az “ismeretlen gazdagépet” (a stderr-n keresztül vezetve), és a tr
a sed
regexps használatának elkerülése érdekében:
ping -c1 -t1 -W0 www.example.com 2>&1 | tr -d "():" | awk "/^PING/{print $3}"
Abban az esetben, ha fontos a kilépési érték rögzítése, akkor a következők működnek (bár kevésbé elegánsak):
ping -c1 -t1 -W0 www.example.com &>/dev/null && ping -c1 -t1 -W0 www.example.com 2>&1 | tr -d "():" | awk "/^PING/{print $3}"
megjegyzések
- Szeretem ezt a megoldást, mert minden további eszköz nélkül működik.
Válasz
Chris Down válaszának kitöltése és a jfgagne (esetleg láncolt) álnevekre vonatkozó megjegyzések megszólítása érdekében íme egy megoldás, amely:
- több IP-t vesz figyelembe
- figyelembe veszi egy vagy több álnév (CNAME)
- nem lekérdezi a
/etc/hosts
fájlt ( az én esetemben nem akartam); a lekérdezéshez a dbernt “s python megoldása tökéletes) -
nem használja az awk / sed
dig +short www.alias.com | grep -v "\.$" | head -n 1
Mindig adja vissza az első IP-címet, vagy ha az üres tringet nem sikerült megoldani. class = “comments”>
Válasz
php -r "echo gethostbyname("unix.stackexchange.com");"
Megjegyzések
- ez működik, de megköveteli, hogy a php legyen telepítve a terminálodra.
- hasznos lehet egy tipikus php-dokkolóban, ahol ” host “, ” dig ” stb. nem érhetők el
Válasz
Szeretném ezt megjegyzésként hozzáadni Andrew McGregor Re: pinghez. Ez azonban nem engedi meg, ezért hozzá kell adnom ezt egy másik válaszként. (Ha valaki át tudja írni egy megjegyzésbe, nyugodtan tegye.)
Ez egy másik változat, csak a ping és a grep használatával :
ping -q -c1 -t1 your_host_here | grep -Eo "([0-9]+\.?){4}"
grep -E
a kiterjesztett reguláris kifejezésért és grep -o
csak a megfelelő részt adja vissza: maga a regexp egy vagy több számjegyet ([0-9]+
) és opcionálisan egy pontot (\.?
) keres négyszer ( {4}
)
Válasz
Használhatja a :
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
Válasz
itt “Bash recept Más népi válaszok segítségével készültem – először megpróbálom a /etc/hosts
-t, majd visszalépek az nslookup oldalra:
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 }
Megjegyzések
- Az egyértelműség kedvéért
getent hosts
nem ‘ csak egy keresés az / etc / hosts fájlban – ez ‘ egy teljes DNS-feloldó hívást küld a gethostbyaddr (3) , és ‘ s nagyon nem valószínű, hogy megbukik abban az esetben, hadig
sikeres lesz. Lásd a getent kézikönyv oldalát . - A @Stuartnak igaza van – én ‘ megtanultam sokat írtam, mióta ezt megírtam, és túlságosan leegyszerűsített egy erős parancsot. A
getent
továbbra is a kedvencem, bár nekem is tetszik adig +short
Válasz
nmap -sP 192.168.178.0/24|grep YOUR_HOSTNAME|sed -n "s/.*[(]\([0-9\.]*\)[)].*/\1/p"
volt a megoldás, amelyet DNS-szerver nélkül találtam
Válasz
Talán nem a legtömörebb, de úgy tűnik, hogy robusztus és hatékony:
# $(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 }
Ez egyetlen IPv4-et fog kiadni IP, valamint meghibásodás esetén adja vissza a 1
-t, miközben maszkolja a stderr kimenetet.
Használhatja így:
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
A Google IP-címe 216.58.192.46.
Ha IPv6-címet szeretne helyette, egyszerűen cserélje le a -4
szót a -6
kifejezésre.
Válasz
dig +noall +answer +nocomments example.com | awk "{printf "%-36s\t%s\n", $1, $5 }"
Megjegyzések
- Bizonyos kontextus, hogy a válasz hogyan javul a már meglévőkhöz képest Legyél nagyszerű. Kérjük, írja be a parancsokat 4 szóközzel (vö. A markdown szintaxissal).
Válasz
az ásás is lassú, az nslookup sokkal gyorsabb
nslookup google.com | grep -Po "Address:\s*[0-9.]+" | tail -1 | sed -e "s/Address:\s*//g"
Válasz
1 sor felold egy listát gazdagépnév
for LINE in `cat ~/Desktop/mylist`; do a=$(nslookup $LINE | awk "/^Address: / { print $1 }"); echo $a >> ~/Desktop/ip; done
Válasz
Ezt állandóan a saját Mac, amelynek nincs getent
. A ping
feltörésnek tűnik. Szeretném figyelembe venni a /etc/hosts
-t is.
Szóval írtam egy hülye burkolót a következőhöz: dns.lookup
Ön, akinek a Node.js telepítve van CLI biztosításához:
$ npm install -g lookup-hostname $ lookup google.com 62.243.192.89
Hozzászólások
- 60% az esély a törés előtt, mielőtt a megoldás közelébe érne.
- @dotbit részletezné? ‘ ezt a hetet használtam ‘ 17 óta, és soha nem volt problémám.
- @Jensen, de te ‘ re az egyetlen, mint mindig. A többiek általában az egyik vagy másik FAIL-ba ütköznek, és mindig.
- ” mint mindig ” Mit értesz ez alatt? ” A többiek ” Ki ‘ ? ” befut a FAIL ” Milyen konkrét problémát lát?
kíváncsi vagyok.
Válasz
Nem ” Nem tudom a bash-script legegyszerűbb módját, de ha fel akarod oldani a gazdagép nevét, és megnézed, hogy a gazdagép fent van-e, használd a ping
!
ping -a hostname -c 1
Egyszer ping
fogja a gazdagépet, és feloldja a hosztnevet IP-címre.
$ 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
Megjegyzések
- a ping használata jó, mert mindenkinek megvan, de meg kell szűrje ki az IP-részt a kimenetekből, ha azt szkriptben szeretné használni.
Válasz
Igen, már sok válasz van, de hiányzik a perl-t használó megoldás:
perl -MSocket -MNet::hostent -E "say inet_ntoa((gethost shift)->addr)" unix.stackexchange.com
Egy bash szkriptben így lehetne használni:
#!/bin/bash ipaddr=$(perl -MSocket -MNet::hostent -E "say inet_ntoa((gethost shift)->addr)" unix.stackexchange.com) echo $ipaddr
Az itt használt modulok alapvető modulok, ezért mindenhol elérhetőnek kell lenniük a CPAN-nal történő telepítés nélkül.
Megjegyzések
-
perl -MSocket -MNet::hostent -E 'say inet_ntoa((gethost shift)->addr)' unix.stackexchange.com 2>/dev/null
sokkal tisztább. de kettőnkön kívül senki nem használja a p ö rl-t, mindenki más természetesen a Pascal Script-et használja. - Valójában inkább a hibaüzeneteket látom, ha bármi elromlik. A
Can't call method "addr" on an undefined value
nem ‘ nem éppen a legjobb hibaüzenet, de utalást adhat a problémára.
Válasz
#!/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! "
Megjegyzések
- A rubin verzió idézőjeleket nyomtat az IP-cím körül — valószínűleg
print
-t kell használni ap
helyett. - thx, @Slaven Rezic és nyugodtan szavazzon. akkor itt alul a szkript valóban láthatóbb lehet … 😉
Válasz
host -t a cisco.com
ez a parancs megjeleníti az ip címet (a tartományt IP-re fogja váltani)
Válasz
A fenti megoldás mellett több állomásnevet is lefordíthat ip-be az alábbi szkript segítségével, az egyetlen függőség a “ping” parancs a Unix magban:
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
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
válasz van valahol odalenn, a fenék közelében. ‘ a legegyszerűbb, nem igényel extra csomagokat, és könnyebb elemezni egy Bash szkriptből is.getent hosts somehost
-re utal, amikor futtatja ezt , miközbensomehost
IPv6-címet fog létrehozni , amely eltér a legtöbb más eszköztől (ping
,ssh
legalább) feloldja a neveket, és megtör néhány dolgot. Használja azahosts
szót ahosts
helyett.ahostsv4
) vagy IPv6 (ahostsv6
) címek? Személy szerint nem találok semmi hibát abban, hogy a nem specifikált kérelem visszaküldi az IPv6-ot. El kell készíteni a kódot. Az IPv6 már több mint 20 éve létezik odakinn.hosts
javaslatot tesz, és eddig 4 ember szavazta meg a vinc17 ‘ kommentet, amelyben kifejezte a ” hirtelen IPv6 “. Az IPv6-ra való felkészülés nem mindig a kérdés: sok programnak módja van annak meghatározására, hogy két név / cím ugyanazon gazdagépre vonatkozik-e. Vagy egyszerű karakterlánc-egyezést használhatnak, vagy sokat kell tudniuk a hálózatról, hogy megtalálják a ” true ” választ. Ez utóbbi egy aknamező, annyi harmadik féltől származó program és rendszer – amelyet nem tudok ellenőrizni – az előbbit használja.