Debo aclarar que el código aquí funciona para Linux (observe los comentarios y publique sobre otros Unices). OP solicitó una solución de Linux, pero sería bueno cambiar la pregunta a "cómo obtener máscara de red" en general, y tener la respuesta combinada de la mejor manera para obtener más sabores de Unix.
#!/bin/sh
ifconfig "$1" | sed -rn '2s/ .*:(.*)$/\1/p'
./script eth0
Acerca de ifconfig en Linux
Junto con otros comandos de redes tradicionales como netstat, arp, rarp y route, ifconfig es parte de las net-tools paquete. Net-tools no se ha desarrollado activamente desde hace mucho tiempo y hay esfuerzos para dejarlo obsoleto a favor del nuevo iproute2 paquete. En aras de la brevedad, si desea más detalles sobre esta transición fundamental, aquí hay algunos enlaces relevantes:
Ejemplo de caso:Debian Linux
Ejemplo de caso:Arch Linux
Página de manual para net-tools ifconfig (consulte la sección ERRORES)
Análisis y comparación de los marcos desde la perspectiva de los usuarios
/sbin/ifconfig eth0 | awk '/Mask:/{ print $4;} '
?
Me pregunto si realmente solo quieres la máscara. Tal vez realmente desee la red (o IP) con máscara, para usar en archivos de configuración, con nmap
, o lo que sea.
En ese caso, en Linux, también puede analizar la salida del ip ...
dominio.
Para enumerar todas las interfaces con su dirección y máscara en notación CIDR:
ip -o -f inet addr show | awk '/scope global/ {print $2, $4}'
O para restringirlo a la interfaz predeterminada:
default_if=$(ip route list | awk '/^default/ {print $5}')
ip -o -f inet addr show $default_if | awk '{print $4}'
lo que me da "192.168.1.61/24" en mi máquina.