Comment puis-je résoudre un nom dhôte en adresse IP dans un script Bash?

Quelle est la manière la plus concise de résoudre un nom dhôte en adresse IP dans un script Bash? Je « m utilise Arch Linux .

Commentaires

  • Dommage que la réponse getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname> est quelque part là-bas près du fond. Il ‘ est le plus simple, ne nécessite aucun paquet supplémentaire et est plus facile à analyser à partir d’un script Bash.
  • @ 0xC0000022L: La nouvelle honte est que cette réponse suggère getent hosts somehost, lorsque exécuter cette alors que sur somehost produira une adresse IPv6 , ce qui est différent de la façon dont la plupart des autres outils (ping, ssh au moins) résoudre les noms et casser certaines choses. Utilisez ahosts au lieu de hosts.
  • @j_random_hacker: qui vous empêche de demander spécifiquement IPv4 (ahostsv4) ou adresses IPv6 (ahostsv6)? Personnellement, je ne trouve rien de mal à la demande non spécifique retournant IPv6. Votre code doit être préparé. IPv6 existe depuis plus de 20 ans maintenant.
  • @ 0xC0000022L: Personne  » ne mempêche  » de faire cela, mais la réponse suggère spécifiquement hosts, et jusquà présent, 4 personnes ont voté pour vinc17 ‘ commentant la douleur causée par  » soudainement IPv6 « . Être prêt pour IPv6 nest pas toujours le problème: de nombreux programmes ont besoin dun moyen de déterminer si deux noms / adresses font référence au même hôte. Ils peuvent soit utiliser une simple correspondance de chaîne, soit en savoir beaucoup sur le réseau pour trouver la réponse  » true « . Ce dernier est un champ de mines, tant de programmes et de systèmes tiers – sur lesquels je nai aucun contrôle – utilisent le premier.

Réponse

Vous pouvez utiliser getent, qui vient avec glibc (donc vous lavez presque certainement sous Linux) . Cela se résout en utilisant gethostbyaddr / gethostbyname2, et vérifiera également /etc/hosts / NIS / etc:

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

Ou, comme Heinzi la dit ci-dessous, vous pouvez utiliser dig avec largument +short (interroge directement les serveurs DNS, ne regarde pas /etc/hosts / NSS / etc):

dig +short unix.stackexchange.com 

Si dig +short nest pas disponible, nimporte lequel des éléments suivants devraient fonctionner. Tous ces DNS interrogent directement et ignorent les autres moyens de résolution:

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 }" 

Si vous ne voulez imprimer quune seule adresse IP, ajoutez le exit au flux de travail de 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 }" 

Commentaires

  • Par défaut, lutilisation de dig ne fonctionne quavec ipv4, où lhôte donne à la fois des réponses ipv4 et ipv6. Cela peut être inattendu. Vous pouvez essayer 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 ne fonctionne pas, sil sagit dun CNAME, il ne retournera pas ladresse IP.
  • Parfois, host peut être expiré et ne renvoie rien. Pour certains domaines, dig +short peut renvoyer un alias de domaine dans la première ligne. Donc, pour vous assurer que la sortie est un IPv4 adresse, utilisez dig +short example.com | grep -Eo '[0-9\.]{7,15}' | head -1.
  • Lutilisation de getent hosts <host> est incorrecte, comme pour instan ce, il peut donner une adresse IPv6 alors quIPv6 ne fonctionne pas ‘. La bonne solution consiste à utiliser getent ahosts <host> pour essayer IPv6 et IPv4 si nécessaire.
  • Il convient de mentionner: host, dig et nslookup semblent parler directement aux serveurs répertoriés dans resolv.conf, alors que  » getent hosts  » respecte à la fois le fichier des hôtes locaux et la mise en cache au niveau de la bibliothèque (comme nscd) si elle est activée .

Réponse

Avec host de dnsutils package:

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

( Corrigé nom du paquet selon les commentaires. À noter que dautres distributions ont host dans différents paquets: Debian / Ubuntu bind9-host , openSUSE bind-utils , Frugalware bind .)

Commentaires

  • Consultez lentrée de résolution ci-dessous si vous devez résoudre quelque chose qui ne fait pas partie du DNS (par exemple / etc / hosts)
  • Sachez que host renvoie parfois une sortie multiligne (dans le cas des redirections), vous ‘ voudrez host unix.stackexchange.com | tail -n1 si vous voulez juste la ligne avec ladresse IP.
  • Il existe plusieurs versions de  » hôte  » avec différents formats de sortie. Par exemple. la plupart des systèmes semblent avoir la version BIND9, mais mon serveur Ubuntu 10.04 LTS a une version complètement différente dune manière ou dune autre ..
  • si vous navez ‘ host ou dig installé, vous pouvez utiliser ping à la place qui est toujours disponible: ping unix.stackexchange.com -c 1 -q 2>&1 | grep -Po "(\d{1,3}\.){3}\d{1,3}" cela nen a pas besoin des packages supplémentaires sont installés sur la plupart des correspondances Unix / Linux.
  • Cette réponse mérite un sérieux vote défavorable. host est un outil DNS (similaire à nslookup) donc il recherche uniquement les hôtes dans DNS, pas dans par exemple /etc/hosts. Il ne s’agit donc PAS d’une réponse à la question de l’OP ‘.

Réponse

Jai un outil sur ma machine qui semble faire le travail. La page de manuel montre quil semble venir avec mysql … Voici comment vous pouvez lutiliser:

resolveip -s unix.stackexchange.com 64.34.119.12 

La valeur de retour de cet outil est différente de 0 si le nom dhôte ne peut pas être résolu:

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

UPDATE Sur fedora, il est livré avec 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 

Je suppose que cela créerait une étrange dépendance pour votre script …

Commentaires

  • Cela semble être la seule solution ici qui utilise le programme de résolution du système dexploitation ‘ – fonctionne donc pour / etc / hosts ainsi que DNS.
  • getent, comme détaillé dans lautre réponse, regarde également / etc / hosts, et est livré avec la glibc, donc na aucune dépendance sur un système Linux.
  • Je nutiliserais pas resolip puisque vous créez une dépendance sur un autre paquet. getent est installé par défaut. host, nslookup et dig sont tous dans des packages facultatifs. Utilisez définitivement getent dans un script.
  • Jaime cette réponse, mais elle ne renvoie ‘ ipv6

Réponse

La commande suivante utilisant dig vous permet de lire le résultat directement sans sed / awk / etc. magie:

$ dig +short unix.stackexchange.com 64.34.119.12 

dig est également inclus dans dnsutils package.


Remarque : dig a une valeur de retour de 0, même si le nom na pas pu être résolu. Ainsi, vous devez vérifier si la sortie est vide au lieu de vérifier la valeur de retour:

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

Remarque 2 : Si un nom dhôte a plusieurs adresses IP (essayez debian.org, par exemple), toutes seront renvoyé. Ce « problème » affecte tous les outils mentionnés dans cette question jusquà présent:

Commentaires

  • Notez que si un domaine a une entrée CNAME son domaine peut être imprimé sur la première ligne au lieu dune adresse IP.

Réponse

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

Commentaires

  • Tenez également compte de ahosts, ahostsv4, ahostsv6 avec getent.
  • cut ne sera pas pour getent ‘ s, qui utilisent \t pour séparer les colonnes. Cest le cas sous Solaris.
  • @ceving: Sur Sola Vous devrez peut-être exécuter cut sans -d (par défaut, \t comme délimiteur). Sous Linux, il ‘ espaces, donc la ligne ci-dessus fonctionne.

Answer

Les solutions données jusquà présent fonctionnent principalement dans le cas le plus simple: le nom dhôte se résout directement en une seule adresse IPv4. Cest peut-être le seul cas où vous devez résoudre les noms dhôte, mais sinon, vous trouverez ci-dessous une discussion sur certains cas que vous pourriez avoir besoin de gérer.

Chris Down et Heinzi ont brièvement discuté du cas où le nom dhôte se résout à plusieurs adresses IP. Dans ce cas (et dautres ci-dessous), les scripts de base sous lhypothèse quun nom dhôte se résout directement en une seule adresse IP peuvent être interrompus. Ci-dessous, un exemple avec un nom dhôte résolu en plusieurs adresses 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 

Mais quest-ce que www.l.google.com ? Cest là que le cas alias doit être introduit. Vérifions lexemple ci-dessous:

$ 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 

Donc www.google.com ne se résout pas directement en adresses IP, mais en un alias qui se résout lui-même en plusieurs adresses IP. Pour plus dinformations sur les alias, consultez ici . Bien sûr, le cas où un alias a une seule adresse IP est possible , comme indiqué ci-dessous:

$ 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 

Mais les alias peuvent-ils être chaînés?La réponse est oui:

$ 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 

Je nai trouvé aucun exemple où un nom dhôte se résout en un alias qui ne se résout pas en une adresse IP, mais je pense que le un cas peut se produire.

Plus que plusieurs adresses IP et alias, y a-t-il dautres cas particuliers … quen est-il dIPv6? Vous pouvez essayer:

$ 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 

Où le nom dhôte ipv6.google.com est un nom dhôte IPv6 uniquement. Quen est-il des noms dhôtes à double pile:

$ 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:: 

Encore une fois à propos dIPv6, si votre hôte est uniquement IPv4, vous pouvez toujours résoudre les adresses IPv6 (testé sur un IPv4 uniquement WinXP et avec ipv6.google.com, vous pouvez lessayer sous Linux). Dans ce cas, la résolution réussit, mais un ping échoue avec un message derreur de lhôte inconnu . Cela pourrait être un cas où votre script échoue.

Jespère que ces remarques vous ont été utiles.

Commentaires

  • Quelle belle complément à la réponse acceptée, montrant tous les cas extrêmes que lon pourrait vouloir traiter dans le script. Ma version host nindique même pas que  » a ladresse  » pour mes boîtes.

Réponse

Pour éviter le problème des alias et toujours avoir une seule adresse IP prête à lemploi:

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

Commentaires

Réponse

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

fonctionne sans dépendances sur dautres systèmes (et pour les hôtes spécifiés dans / etc / hosts)

Commentaires

  • Lutilisation de ping est ce dont javais besoin car jai besoin de la valeur du fichier hosts mais lanalyse du motif sed correctement mais cela a fonctionné ping – q -c 1 -t 1 votre_hôte_ici | grep PING | sed -e  » s / ^ [^ (] * [(] //  » | sed -e  » s / [)]. * $ //  »
  • Pour résoudre un problème sur mon réseau domestique tel que myhostname.local, cela fonctionne donc pour moi, c’est la meilleure réponse.
  • Puis-je également suggérer ceci: ping -q -c 1 -t 1 bahface.local | grep -m 1 PING | cut -d "(" -f2 | cut -d ")" -f1
  • getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname> fonctionne également pour les déclarations à lintérieur de /etc/hosts … et ‘ est loutil de référence pour toutes sortes de bases de données système (passwd, groupe, alias, services).

Réponse

Simple mais utile :

  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

Toutes les commandes résoudront une adresse IP si lhôte existe toujours. Si lhôte pointe vers un CNAME, il obtiendra également ladresse IP dans ce cas.

La première commande renvoie ladresse IPv4 résolue.

La deuxième commande renvoie le res Adresse IPv6 terminée.

La troisième commande renverra ladresse préférée du propriétaire, qui peut être une adresse IPv4 ou IPv6.

Commentaires

  • De loin le plus simple. Et cest disponible par défaut. Pas comme host qui nécessite linstallation de la bindutils

Réponse

Voici une légère variation de lapproche ping qui prend en compte « hôte inconnu » (en passant par stderr) et utilise tr pour éviter lutilisation de sed regexps:

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

Au cas où il est important de capturer la valeur de sortie, alors ce qui suit fonctionnera (bien que moins élégant):

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

Commentaires

  • Jadore cette solution, car elle fonctionne sans outils supplémentaires.

Réponse

Pour compléter la réponse de Chris Down, et adresser les commentaires de jfgagne sur les alias (éventuellement chaînés), voici une solution qui:

  • prend en compte plusieurs IP
  • prend en compte un ou plusieurs alias (CNAME)
  • ninterroge pas le fichier /etc/hosts ( dans mon cas, je ne le voulais pas); pour linterroger, la solution python de dbernt est parfaite)
  • nutilise pas awk / sed

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

Renvoie toujours la première adresse IP, ou tring vide sil nest pas résolu. avec la version de dig:

 $ dig -v DiG 9.8.1-P1 

Commentaires

  • Merci, les autres réponses supposent que  » dig + short  » toujours renvoie une seule adresse IP. Ils ne tenaient ‘ que pour les CNAME.

Réponse

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

Commentaires

  • cela fonctionne, mais cela nécessite que php soit installé sur votre terminal
  • peut être utile sur un conteneur docker php typique où  » hôte « ,  » dig  » etc. ne sont pas disponibles

Réponse

Jaurais aimé ajouter ceci en commentaire à Andrew McGregor Re: ping. Cependant, cela ne me laisse pas, donc je dois ajouter ceci comme une autre réponse. (Si quelquun peut le déplacer dans un commentaire, nhésitez pas à le faire.)

Ceci est une autre variante, utilisant uniquement ping et grep :

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

grep -E pour lexpression régulière étendue et grep -o à ne renvoie que la partie correspondante. lexpression régulière elle-même recherche un ou plusieurs chiffres ([0-9]+) et éventuellement un point (\.?) quatre fois ( {4})

Réponse

Vous pouvez utiliser 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éponse

ici « une recette Bash Jai cuisiné en utilisant les réponses dautres personnes – essaie dabord /etc/hosts, puis revient à 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 }  

Commentaires

  • Pour être clair, getent hosts isn ‘ t juste une recherche dans / etc / hosts – il ‘ est un appel de résolution DNS complet à gethostbyaddr (3) , et il ‘ est très peu susceptible déchouer dans un cas où dig réussira. Voir la page de manuel pour getent .
  • @Stuart a raison – je ‘ jai appris beaucoup depuis lécriture de cela et a simplifié à lextrême une commande puissante. getent reste mon préféré, même si jaime aussi dig +short

Répondre

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

était la solution que jai trouvée sans serveur DNS

Réponse

Ce nest peut-être pas le plus concis, mais il semble robuste et efficace:

# $(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 } 

Cela affichera un seul IPv4 IP, ainsi que renvoyer 1 en cas déchec, tout en masquant la sortie stderr.

Vous pouvez lutiliser comme ceci:

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 

Ladresse IP de Google « est 216.58.192.46.

Si vous souhaitez plutôt une adresse IPv6, remplacez simplement -4 par -6.

Réponse

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

Commentaires

  • Un certain contexte dans lequel cette réponse saméliore par rapport à celles déjà existantes être génial. Veuillez également indenter les commandes de 4 espaces (cf. la syntaxe de démarquage).

Answer

dig is too lent, nslookup est beaucoup plus rapide

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

Réponse

1 ligne résoudre une liste du nom dhôte

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

Réponse

Je fais cela tout le temps sur mon Mac qui na pas getent. ping ressemble à un hack. Je voudrais également prendre en compte /etc/hosts.

Jai donc écrit un wrapper stupide pour dns.lookup pour vous qui avez installé Node.js pour fournir une CLI:

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

Commentaires

  • 60% de chance de casse avant darriver à une résolution.
  • @dotbit pourriez-vous élaborer? ‘ ai utilisé cette semaine depuis ‘ 17 et je nai jamais eu de problèmes.
  • @Jensen mais vous ‘ est le seul jamais, comme toujours. Le reste d’entre nous se heurte généralement à un échec d’une sorte ou d’une autre, et toujours.
  •  » comme toujours  » Que voulez-vous dire par là?  » Le reste dentre nous  » Qui ‘ est qui ?  » rencontre un échec  » Quel problème spécifique rencontrez-vous? Je ‘ suis curieux.

Réponse

Je nen ai pas  » t connaissez le moyen le plus simple pour un script bash mais si vous voulez résoudre un nom dhôte et voir si lhôte est actif, utilisez ping!

ping -a hostname -c 1 

ping lhôte une fois et résoudra le nom dhôte en adresse 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 

Commentaires

  • lutilisation de ping est une bonne chose, car tout le monde la, mais vous devez filtrez la partie IP des sorties, si vous souhaitez lutiliser dans un script.

Réponse

Oui, il y a déjà beaucoup de réponses, mais il manque une solution utilisant perl:

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

Dans un script bash, il pourrait être utilisé comme ceci:

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

Les modules utilisés ici sont des modules de base, ils devraient donc être disponibles partout sans installation avec CPAN.

Commentaires

  • perl -MSocket -MNet::hostent -E 'say inet_ntoa((gethost shift)->addr)' unix.stackexchange.com 2>/dev/null est beaucoup plus propre. mais personne dautre que nous deux nutilise p ö rl, tout le monde utilise bien sûr Pascal Script.
  • En fait, je préfère voir les messages derreur si quelque chose va mal. Can't call method "addr" on an undefined value nest ‘ que le meilleur message derreur, mais peut donner une indication sur le problème.

Réponse

#!/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! " 

Commentaires

  • La version ruby imprime des guillemets autour de ladresse IP — probablement print devrait être utilisé à la place de p.
  • merci, @Slaven Rezic et nhésitez pas à voter pour. là encore, ici en bas le script peut être plus visible en fait … 😉

Answer

host -t a cisco.com 

cette commande affichera ladresse IP (redéfinira le domaine en IP)

Réponse

Outre la solution ci-dessus, vous pouvez traduire plusieurs noms dhôte en ip via le script ci-dessous, la seule dépendance est la commande « ping » dans le noyau 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 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *