Ich möchte meine Netzmaske unter Linux bekommen. Es wird ausgegeben mit, ifconfig
aber ich möchte den String extrahieren.
linux
text-processing
ip
michelemarcon
quelle
quelle
ifconfig
lautet die Netzmaskenzeile von FreeBSD: Obwohlinet 192.168.144.120 netmask 0xffffff00 broadcast 192.168.144.255
die Antworten leicht angepasst werden können, gibt es wahrscheinlich keine Einheitsgröße (nur mit Bash / ifconfig). .Antworten:
Ich sollte klarstellen, dass der Code hier für Linux funktioniert (beachten Sie Kommentare und Beiträge zu anderen Unices). OP fragte nach einer Linux-Lösung, aber es wäre gut, die Frage in "Wie bekomme ich eine Netzmaske?" Im Allgemeinen zu ändern und die Antwort den besten Weg für mehr Unix-Varianten kombinieren zu lassen.
Über ifconfig unter Linux
Zusammen mit anderen herkömmlichen Netzwerkbefehlen wie netstat, arp, rarp und route ist ifconfig Teil des net-tools- Pakets. Net-Tools wurden seit langer Zeit nicht mehr aktiv entwickelt, und es wird versucht, sie zugunsten des neueren iproute2- Pakets zu verwerfen . Wenn Sie der Kürze halber mehr Details zu diesem grundlegenden Übergang wünschen, finden Sie hier einige relevante Links:
Fallbeispiel: Debian Linux
Fallbeispiel: Arch Linux
Manpage für Net-Tools ifconfig (siehe Abschnitt BUGS)
Analyse und Vergleich der Frameworks aus Anwendersicht
quelle
?
quelle
/sbin/ifconfig eth0 | awk -F: '/Mask:/{print $4}'
/sbin/ifconfig eth0 | awk '/netmask/{print $4}'
Ich frage mich, ob Sie wirklich nur die Maske wollen. Vielleicht möchten Sie wirklich, dass das Netzwerk (oder die IP) mit Maske in Konfigurationsdateien mit
nmap
oder was auch immer verwendet wird.In diesem Fall können Sie unter Linux auch die Ausgabe des
ip ...
Befehls analysieren .So listen Sie alle Schnittstellen mit ihrer Adresse und Maske in CIDR-Notation auf:
Oder um es auf die Standardschnittstelle zu beschränken:
Das gibt mir "192.168.1.61/24" auf meinem Computer.
quelle
ip -o -f inet addr show scope global
undip route list default
.Wenn Sie ein Betriebssystem verwenden, das die Maske in hexadezimaler Form ausgibt, können Sie Folgendes tun:
quelle
quelle
awk
beruht, bei denen dies im wirklichen Leben nicht der Fall istifconfig
. Ich würde jedoch einige Änderungen vorschlagen :ifconfig eth0 | grep -o 'Mask:[^\s]*' | cut -d':' -f2
. Das gibt-o
alsogrep
nur einen Teil der Linie zurück und nicht das ganze Los (effizienter). Ordnen Sie Nicht-Leerzeichen ([^\s]*
) zu, um das Ende des Netzmasken-Tokens zu finden. Einfache Anführungszeichen um das Feldtrennzeichen zur Sicherheit./sbin/ifconfig | grep ask | sed -e 's/.*netmask //g' | sed -e 's/ .*//g'
die maske hexadezimal ausgeben.Wenn Sie die Netzmaske für das Standardnetzwerkgerät suchen, gibt dieser Befehl das Standardgerät zurück, da das Standardgerät möglicherweise nicht eth0 ist
Und dieser Befehl ruft die Maske ab:
Vielen Dank an Eliah Kagan und Paulo Tome, die mir geholfen haben, die Antwort zu vereinfachen und zu klären. Auf meinem PC war das Standard-Ethernet-Gerät "wlx504654c1a91", was viel zu kompliziert war, um es sich zu merken und genau zu tippen, daher der zweistufige Prozess.
quelle
grep 'pattern' | awk '{ action }'
kann normalerweise aufawk '/pattern/ { action }'