Quiero obtener mi máscara de red en Linux. Se emite con ifconfig
pero quiero extraer la cadena.
linux
text-processing
ip
michelemarcon
fuente
fuente
ifconfig
la línea de máscara de red de FreeBSD es:inet 192.168.144.120 netmask 0xffffff00 broadcast 192.168.144.255
así que si bien las respuestas se pueden ajustar fácilmente, probablemente no haya una talla única para todos (usando solo Bash / ifconfig) .Respuestas:
Debo aclarar que el código aquí funciona para Linux, (tenga en cuenta los comentarios y publicaciones 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 hacer que la respuesta combine la mejor manera para obtener más sabores de Unix.
Acerca de ifconfig en Linux
Junto con otros comandos de red tradicionales como netstat, arp, rarp y route, ifconfig es parte del paquete net-tools . Net-tools no se ha desarrollado activamente desde hace mucho tiempo y hay esfuerzos para desaprobarlo a favor del nuevo paquete iproute2 . 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 ifconfig de net-tools (consulte la sección ERRORES)
Análisis y comparación de los marcos desde la perspectiva de los usuarios.
fuente
?
fuente
/sbin/ifconfig eth0 | awk -F: '/Mask:/{print $4}'
/sbin/ifconfig eth0 | awk '/netmask/{print $4}'
Me pregunto si realmente solo quieres la máscara. Tal vez realmente desee que la red (o IP) con máscara, se use en archivos de configuración, con
nmap
o lo que sea.En ese caso, en Linux, también puede analizar la salida del
ip ...
comando.Para enumerar todas las interfaces con su dirección y máscara en notación CIDR:
O para restringirlo a la interfaz predeterminada:
que me da "192.168.1.61/24" en mi máquina.
fuente
ip -o -f inet addr show scope global
yip route list default
.Si está utilizando un sistema operativo que genera la máscara en hexadecimal, puede hacer algo como:
fuente
fuente
awk
que no es el caso en la vida realifconfig
. Yo sugeriría algunos cambios sin embargo:ifconfig eth0 | grep -o 'Mask:[^\s]*' | cut -d':' -f2
. El-o
modo quegrep
solo devuelve parte de la línea en lugar de todo el lote (más eficiente). Une caracteres que no sean espacios en blanco ([^\s]*
) para encontrar el final del token de máscara de red. Comillas simples alrededor del delimitador de campo por seguridad./sbin/ifconfig | grep ask | sed -e 's/.*netmask //g' | sed -e 's/ .*//g'
generar la máscara en hexadecimal.Si está buscando la máscara de red para el dispositivo de red predeterminado, este comando devuelve el dispositivo predeterminado ya que el dispositivo predeterminado podría no ser eth0
Y este comando recupera la máscara:
Gracias a Eliah Kagan y Paulo Tome que me ayudaron a simplificar y aclarar la respuesta. En mi máquina personal, el dispositivo de Ethernet predeterminado era "wlx504654c1a91", que era demasiado complicado para recordar y escribir con precisión, de ahí el proceso de dos pasos.
fuente
grep 'pattern' | awk '{ action }'
generalmente se puede reducir aawk '/pattern/ { action }'