A maneira moderna de fazer isso é usar o comando ip
. Por exemplo, no meu sistema com a minha conexão sem fio ativa, recebo:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 00:26:b9:dd:2c:28 brd ff:ff:ff:ff:ff:ff 3: wlp3s0b1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether c4:46:19:5f:dc:f5 brd ff:ff:ff:ff:ff:ff inet 192.168.1.4/24 brd 192.168.1.255 scope global wlp3s0b1 ← valid_lft forever preferred_lft forever inet6 fe80::c646:19ff:fe5f:dcf5/64 scope link valid_lft forever preferred_lft forever 16: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link/none inet 123.167.217.2/24 brd 123.167.217.255 scope global tun0 ← valid_lft forever preferred_lft forever
As interfaces ativas têm um endereço inet
e um endereço de transmissão ( brd
).
Você pode mostrar todas essas interfaces com:
$ ip addr show | awk '/inet.*brd/{print $NF}'
wlp3s0b1
tun0
Se você quiser apenas um, você pode obter o primeiro (somente) com:
$ ip addr show | awk '/inet.*brd/{print $NF; exit}'
wlp3s0b1
A instrução exit
informa awk
para parar de pesquisar
depois de encontrar o primeiro jogo.