Ces commandes permettent de récupérer les infos sur le réseau d'une machine: nom de l'interface, adresse IP et MAC. C'est particulièrement utile si tu gère un parc de machines, tu pourras avoir toutes les infos réseau dans un fichier texte qui sera utile pour retrouver rapidement à qui appartient une adresse IP ou MAC en recherchant dans le fichier.
Lister les interfaces réseau
$ ip a | awk -F'[: ]' '/^[0-9]+:/ {print $3}'
lo
enp2s0
enp3s0
Lister les adresses IP avec leur masque
$ ip a | awk '/inet / {print $2}'
127.0.0.1/8
10.33.75.72/24
192.168.1.1/24
Lister les adresses MAC
$ ip a | awk '/link\/ether/ {print $2}'
c1:8f:d8:58:6c:1d
07:a7:3b:af:ae:de
Obtenir les infos réseau de la machine: hostname, interface, MAC et IP avec le masque réseau.
Le localhost (127.0.0.1) est exclu avec "grep -v lo" pour ne pas encombrer inutilement la sortie.
$ for i in $(ip a | awk -F'[: ]' '/^[0-9]+:/ {print $3}' | grep -v lo); do \
echo -en $(hostname)\\t; \
echo -en $i\\t; \
echo -en $(ip a show $i | awk '/link\/ether/ {print $2}')\\t; \
echo $(ip a show $i | awk '/inet / {print $2}') ; \
done
ma-machine enp2s0 c1:8f:d8:58:6c:1d 10.33.75.72/24
ma-machine enp3s0 07:a7:3b:af:ae:de 192.168.1.1/24
Si tu as plusieurs machines, pour chaque machine tu peux rediriger la sortie dans un fichier nommé "infos_reseau_<HOSTNAME>.txt" dans l'exemple.
$ for i in $(ip a | awk -F'[: ]' '/^[0-9]+:/ {print $3}' | grep -v lo); do \
echo -en $(hostname)\\t; \
echo -en $i\\t; \
echo -en $(ip a show $i | awk '/link\/ether/ {print $2}')\\t; \
echo $(ip a show $i | awk '/inet / {print $2}') ; \
done > /tmp/infos_reseau_$(hostname).txt
Ensuite tu mets dans un dossier tous les fichiers "infos_reseau_<HOSTNAME>.txt" de chaque machine et tu les concatènent. Comme ça tu as toutes les infos de tes machines dans un seul fichier ce qui est utile en cas de problème pour retrouver rapidement à qui appartient une adresse IP ou MAC en faisant une recherche dans le fichier.