ver sacar saber para mac equipo dirección direccion como comando codigo buscar linux shell mac-address

linux - sacar - Obtener la dirección MAC usando shell script



saber la dirección mac de mi pc (9)

Actualmente todas las soluciones mencionadas para obtener la dirección MAC siempre usan eth0. Pero qué pasa si en lugar de eth0 mis interfaces comienzan con eth1. También en OS X los nombres de interfaz son diferentes.
También la interfaz eth0 puede estar presente pero no se utiliza. Es decir, no está activo, no tiene una IP.

Entonces, ¿hay alguna manera de obtener la dirección MAC para la primera interfaz disponible que sea Activa (es decir, tiene una dirección de entrada, incluso no quiero una que tenga inet6)?

Por ejemplo

eth0 Link encap:Ethernet HWaddr <some addr> inet6 addr: <some addr> Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:123 RX packets:123 errors:123 dropped:123 overruns:123 frame:123 TX packets:123 errors:123 dropped:123 overruns:123 carrier:123 collisions:123 txqueuelen:123 RX bytes:123 (123 MB) TX bytes:123 (123 KB) Interrupt:123 Memory:00000000-00000000 eth1 Link encap:Ethernet HWaddr <some addr> inet addr:<some addr> Bcast:<some addr> Mask:<some addr> inet6 addr: <some addr> Scope:Link UP BROADCAST RUNNING MULTICAST MTU:123 Metric:123 RX packets:123 errors:123 dropped:123 overruns:123 frame:123 TX packets:123 errors:123 dropped:123 overruns:123 carrier:123 collisions:123 txqueuelen:123 RX bytes:123 (123 MB) TX bytes:123 (123 KB) Interrupt:123 Memory:00000000-00000000

NOTA: He cambiado los valores de la salida.

Así que en este caso quiero el HWaddr para eth1 y no eth0. ¿Cómo lo encuentro? También debería funcionar en todos los sabores de Linux.


Aquí hay una respuesta alternativa en caso de que las que se enumeran arriba no funcionen para usted. También puede utilizar las siguientes soluciones, que se encontraron here :

ip addr

O

ip addr show

O

ip link

Los tres de estos mostrarán su (s) dirección (es) de MAC junto al link/ether . Me tropecé con esto porque acababa de hacer una nueva instalación de Debian 9.5 desde una memoria USB sin acceso a Internet, así que solo pude hacer una instalación mínima y recibí

-bash: ifconfig: command not found

cuando probé algunas de las soluciones anteriores. Pensé que alguien más podría encontrar este problema también. Espero eso ayude.


En un sistema GNU / Linux moderno, puede ver las interfaces de red disponibles que muestran el contenido de /sys/class/net/ , por ejemplo:

$ ls /sys/class/net/ enp0s25 lo virbr0 virbr0-nic wlp2s0

Puede verificar si una interfaz está mirando hacia la operstate en el directorio del dispositivo. Por ejemplo, aquí está cómo puede ver si enp0s25 está activo:

$ cat /sys/class/net/enp0s25/operstate up

A continuación, puede obtener la dirección MAC de esa interfaz con:

$ cat /sys/class/net/enp0s25/address ff:00:ff:e9:84:a5

Por ejemplo , aquí hay un simple script de bash que imprime direcciones MAC para interfaces activas:

#!/bin/bash # getmacifup.sh: Print active NICs MAC addresses D=''/sys/class/net'' for nic in $( ls $D ) do echo $nic if grep -q up $D/$nic/operstate then echo -n '' '' cat $D/$nic/address fi done

Y aquí está su salida en un sistema con una interfaz ethernet y wifi:

$ ./getmacifup.sh enp0s25 ff:00:ff:e9:84:a5 lo wlp2s0

Para más detalles vea la documentación del Kernel.

Recuerde también que a partir de 2015, la mayoría de las distribuciones de GNU / Linux cambiaron a systemd , y ya no usan el esquema de nombres de interfaz ethX ; ahora usan una convención de nombres más robusta basada en la topología de hardware, consulte:


La mejor solución específica para Linux es usar sysfs:

$ IFACE=eth0 $ read MAC </sys/class/net/$IFACE/address $ echo $IFACE $MAC eth0 00:ab:cd:12:34:56

Este método es extremadamente limpio en comparación con los otros y no genera procesos adicionales, ya que read es un comando incorporado para shells POSIX, incluidos shells que no son BASH. Sin embargo, si necesita portabilidad a OS X, entonces tendrá que usar los métodos ifconfig y sed , ya que OS X no tiene una interfaz de sistema de archivos virtual como sysfs.


Observe que el nombre de la interfaz y la dirección MAC son los primeros y últimos campos en una línea sin espacios en blanco iniciales.

Si una de las líneas con sangría contiene inet addr: el último nombre de la interfaz y la dirección MAC deben imprimirse.

ifconfig -a | awk ''/^[a-z]/ { iface=$1; mac=$NF; next } /inet addr:/ { print iface, mac }''

Tenga en cuenta que múltiples interfaces podrían cumplir sus criterios. Luego, el script imprimirá múltiples líneas. (Puede agregar ; exit justo antes de la llave de cierre final si siempre desea imprimir la primera coincidencia).


Obtener dirección MAC para eth0:

$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep HWADDR | cut -c 9-25

Ejemplo:

[me@machine ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep HWADDR | cut -c 9-25 55:b5:00:10:be:10


Oh, si solo quieres la dirección mac mac ether, puedes usar eso:

ifconfig | grep "ether*" | tr -d '' '' | tr -d ''/t'' | cut -c 6-42

(trabajo en macintosh)

  • ifconfig - obtener toda la información
  • grep - mantén la línea con la dirección
  • tr - limpiar todo
  • cut - remueve el "éter" para tener solo la dirección

Puedes hacer lo siguiente

ifconfig <Interface ex:eth0,eth1> | grep -o -E ''([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}''

También puede obtener MAC para todas las interfaces de la siguiente manera

cat /sys/class/net/*/address

Para interfaz particular como para eth0

cat /sys/class/net/eth0/address


Simplemente ejecute:

ifconfig | grep ether | cut -d " " -f10

O

ip a | grep ether | cut -d " " -f6

Estos dos comandos de ejemplo grep todas las líneas con la cadena "ether" y cortarán la dirección mac (que necesitamos) siguiendo los espacios numéricos (especificados en la opción -f) de la parte grepped.

Probado en diferentes sabores de Linux


$ ip route show default | awk ''/default/ {print $5}''

retorno: eth0 (mi interfaz en línea)

$ cat /sys/class/net/$(ip route show default | awk ''/default/ {print $5}'')/address

return: ec: a8: 6b: bd: 55: 05 (macaddress of eth0, mi interfaz en línea)

Imagen terminal