Je veux obtenir mon masque de réseau sous Linux. Il est sorti avec ifconfig
mais je veux extraire la chaîne.
linux
text-processing
ip
michelemarcon
la source
la source
ifconfig
ligne de masque de réseau de FreeBSD est :,inet 192.168.144.120 netmask 0xffffff00 broadcast 192.168.144.255
donc bien que les réponses puissent être facilement ajustées, il n'y a probablement pas de solution universelle (en utilisant Bash / ifconfig uniquement) .Réponses:
Je dois préciser que le code fonctionne ici pour Linux, (notez les commentaires et publiez sur d'autres Unices). OP a demandé une solution Linux, mais il serait bon de changer la question en "comment obtenir un masque de réseau" en général, et d'avoir la réponse combiner la meilleure façon pour plus de saveurs Unix.
À propos d'ifconfig sous Linux
Avec d'autres commandes de mise en réseau traditionnelles comme netstat, arp, rarp et route, ifconfig fait partie du package net-tools . Net-tools n'a pas été activement développé depuis très longtemps et des efforts sont déployés pour le déprécier en faveur du nouveau package iproute2 . Par souci de concision, si vous souhaitez plus de détails sur cette transition fondamentale, voici quelques liens pertinents:
Exemple de cas: Debian Linux
Exemple de cas: Arch Linux
Page de manuel de net-tools ifconfig (voir la section BUGS)
Analyse et comparaison des frameworks du point de vue des utilisateurs
la source
?
la source
/sbin/ifconfig eth0 | awk -F: '/Mask:/{print $4}'
/sbin/ifconfig eth0 | awk '/netmask/{print $4}'
Je me demande si tu ne veux vraiment que le masque. Peut-être que vous voulez vraiment que le réseau (ou IP) avec masque soit utilisé dans les fichiers de configuration, avec
nmap
ou autre.Dans ce cas, sous Linux, vous pouvez également analyser la sortie de la
ip ...
commande.Pour répertorier toutes les interfaces avec leur adresse et leur masque en notation CIDR:
Ou pour le restreindre à l'interface par défaut:
ce qui me donne "192.168.1.61/24" sur ma machine.
la source
ip -o -f inet addr show scope global
etip route list default
.si vous utilisez un système d'exploitation qui génère le masque en hexadécimal, vous pouvez faire quelque chose comme:
la source
la source
awk
ce qui n'est pas le cas dans la vraie vieifconfig
. Je suggère quelques modifications cependant:ifconfig eth0 | grep -o 'Mask:[^\s]*' | cut -d':' -f2
. Le-o
afin quegrep
ne renvoie qu'une partie de la ligne plutôt que l'ensemble du lot (plus efficace). Faites correspondre les caractères non blancs ([^\s]*
) pour trouver la fin du jeton de masque de réseau. Des guillemets simples autour du délimiteur de champ pour plus de sécurité./sbin/ifconfig | grep ask | sed -e 's/.*netmask //g' | sed -e 's/ .*//g'
le masque en hexadécimal.Si vous recherchez le masque de réseau pour le périphérique réseau par défaut, cette commande renvoie le périphérique par défaut car le périphérique par défaut n'est peut-être pas eth0
Et cette commande récupère le masque:
Merci à Eliah Kagan et Paulo Tome qui m'ont aidé à la fois à simplifier et à clarifier la réponse. Sur ma machine personnelle, le périphérique Ethernet par défaut était "wlx504654c1a91", ce qui était beaucoup trop compliqué à mémoriser et à taper avec précision, d'où le processus en deux étapes.
la source
grep 'pattern' | awk '{ action }'
peut généralement être réduit àawk '/pattern/ { action }'