Měl bych objasnit, že kód zde funguje pro Linux (všimněte si komentářů a příspěvků o jiných Unicích). OP požádal o řešení pro Linux, ale bylo by dobré změnit otázku obecně na „jak získat masku sítě“ a nechat odpověď zkombinovat nejlepší způsob pro více variant Unixu.
#!/bin/sh
ifconfig "$1" | sed -rn '2s/ .*:(.*)$/\1/p'
./script eth0
O ifconfig v Linuxu
Spolu s dalšími tradičními síťovými příkazy, jako jsou netstat, arp, rarp a route, je ifconfig součástí net-tools balík. Net-tools nebyly aktivně vyvíjeny opravdu dlouhou dobu a existují snahy o jeho ukončení ve prospěch novějšího iproute2 balík. V zájmu stručnosti, pokud chcete více podrobností o tomto zásadním přechodu, zde jsou některé relevantní odkazy:
Příklad:Debian Linux
Příklad:Arch Linux
Manuální stránka pro net-tools ifconfig (viz sekce CHYBY)
Analýza a srovnání rámců z pohledu uživatelů
/sbin/ifconfig eth0 | awk '/Mask:/{ print $4;} '
?
Zajímalo by mě, jestli chceš opravdu jen masku. Možná opravdu chcete síť (nebo IP) s maskou, kterou chcete použít v konfiguračních souborech, s nmap
nebo cokoliv jiného.
V takovém případě na Linuxu můžete také analyzovat výstup ip ...
příkaz.
Seznam všech rozhraní s jejich adresou a maskou v notaci CIDR:
ip -o -f inet addr show | awk '/scope global/ {print $2, $4}'
Nebo jej omezit na výchozí rozhraní:
default_if=$(ip route list | awk '/^default/ {print $5}')
ip -o -f inet addr show $default_if | awk '{print $4}'
což mi na mém počítači zobrazí „192.168.1.61/24“.