Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/03/2015, à 00:41

jean-luc5629

script domaine avec plusieurs ip [résolu]

Bonsoir;

J'utilise ce script pour récupérer les ip dans un fichier à partir d'un autre fichier contenant des noms de domaines :

>/usr/local/bin/ip/list3
while read line
do
echo $(nslookup $line | awk '/^Address: / { print $2 }') 
done < /usr/local/bin/domain/list >/usr/local/bin/ip/list3

Le problème c'est que certains domaines disposent de plusieurs ip; et j'obtiens ce genre de liste :

175.125.237.155
72.10.158.38
75.275.117.137
138.177.23.251
33.115.210.77
203.77.117.53
52.210.33.111
203.77.117.57
138.275.51.171
57.32.5.135
203.77.117.77
107.28.1.87 107.28.0.87
35.171.72.178
52.210.77.20
77.120.222.130
75.275.117.137
58.158.320.52
107.33.35.383 107.33.37.383

Voir le problème en 12° et dernière ligne....18 domaines mais 20 ip...et je voudrais toutes les ip, mais une par ligne.
J'ai aussi tenté avec dig + short, mais même problème.

Merci

Dernière modification par jean-luc5629 (Le 12/03/2015, à 00:05)

Hors ligne

#2 Le 11/03/2015, à 07:34

pingouinux

Re : script domaine avec plusieurs ip [résolu]

Bonjour,
Tu peux remplacer l'avant-dernière ligne par

nslookup $line | awk '/^Address: / { print $2 }'

Remarque : La première ligne est inutile, puisque tu crées le fichier ensuite

Hors ligne

#3 Le 11/03/2015, à 08:45

bruno

Re : script domaine avec plusieurs ip [résolu]

Bonjour,

En passant le nom du fichier en argument :

#!/bin/bash

while read line
do
    if [ $line ]
        then    
            echo -e "$(dig $line A +short)"
    fi
done < $1

Hors ligne

#4 Le 11/03/2015, à 18:48

jean-luc5629

Re : script domaine avec plusieurs ip [résolu]

Salut;
Merci à vous deux.

Finalement, rectificatif, c'est de ma faute je n'ai pas été assez clair au départ...car ce que je voulais faire en plus, n'est pas réellement résolu , et pour ceci j'étais obligé d'utiliser echo tel ma première idée pour le fichier /etc/hosts :

while read line
do
echo $(nslookup $line | awk '/^Address: / { print $2 }')    $line
echo $ip 
done < /usr/local/bin/domain/list >>/etc/hosts

Afin d'obtenir les lignes :
ip    hostname

mais j'obtiens toujours
ip1 ip2 hostname
#######################################################################
Par contre avec dig + short, j'ai un soucis avec des hostname qui sont sous cette forme :
nom.e-site.zone qui a 2 ip mais me sort :
nom.e-site.zone.  ###pas d'ip et un . en bout du hostname
ip1 ##pas le hostname
ip2  nom.e-site.zone

Dernière modification par jean-luc5629 (Le 11/03/2015, à 19:16)

Hors ligne

#5 Le 11/03/2015, à 20:33

quaego

Re : script domaine avec plusieurs ip [résolu]

Salut,

Si j'ai bien compris ce qui est souhaité, au lieu de :

echo $(nslookup $line | awk '/^Address: / { print $2 }')

Avoir quelque chose du style (boucler sur les IPs, puisqu'elles sont séparées par des espaces) :

ips=$( nslookup $line  | awk '/^Address: / { print $2 }' )
for ip in $ips
do
   echo "$ip $line"
done

Hors ligne

#6 Le 11/03/2015, à 22:32

pingouinux

Re : script domaine avec plusieurs ip [résolu]

nslookup $line | awk -v line=$line '/^Address: / { print $2" "line }'

Hors ligne

#7 Le 12/03/2015, à 00:07

jean-luc5629

Re : script domaine avec plusieurs ip [résolu]

pingouinux a écrit :
nslookup $line | awk -v line=$line '/^Address: / { print $2" "line }'

Bonsoir;
Moi qui m'entêtais avec echo !!!
Merci encore..

Hors ligne