NOTAS
-
Identificadores de dispositivos NIC
Os exemplos abaixo assumem que a interface de rede é uma placa sem fio chamada
wlan0
. Ajuste este bit nos exemplos para sua situação particular. Por exemplo, se é um cartão NIC com fio, é provável que sejaeth0
. -
IPv4 - (Protocolo de Internet versão 4)
Além disso, esses exemplos estão retornando o endereço IPv4. o "quad pontilhado" que a maioria das pessoas identifica como "Endereço IP".
Por exemplo:
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
-
IPv6 - (Protocolo de Internet versão 6)
Se o seu sistema estiver configurado para suportar IPv6, você verá tanto o "quad pontilhado" quanto os endereços IP IPv6 na saída
ifconfig
.Por exemplo:
inet6 addr: fe80::226:c7ff:fe85:a720/64 Scope:Link
Os comandos abaixo explicitamente ignoram isso, mas podem ser adaptados facilmente para obter essa informação.
Soluções (usando ifconfig
)
Existem várias maneiras de fazer isso. Você poderia, por exemplo, usar este script awk
para analisar o endereço IP de sua NIC de LAN sem fio (wlan0):
$ ifconfig wlan0 | grep "inet " | awk -F'[: ]+' '{ print $4 }'
192.168.1.20
Você pode fazer isso e torná-lo mais compacto:
$ ifconfig wlan0 | awk '/t addr:/{gsub(/.*:/,"",$2);print$2}'
192.168.1.20
Você também pode fazer isso usando perl
:
$ ifconfig wlan0 | perl -nle'/t addr:(\S+)/&&print$1'
192.168.1.20
O exemplo do Perl é o mais compacto possível.
Existem inúmeras outras maneiras de fazer isso, estes são apenas alguns exemplos para você começar.
EDIT # 1
Algumas notas e comentários adicionais. @StephaneChazelas demonstrou que existe uma versão ainda mais compacta usando grep
:
$ ifconfig wlan0|grep -Po 't addr:\K[\d.]+'
192.168.1.20
Esta solução faz uso da capacidade de grep
em versões mais recentes para fazer uso de PCRE (expressões regulares Perl), junto com a opção -o
para retornar apenas o que corresponde à expressão regular.
Soluções (usando ip
)
Como também foi mencionado nos comentários, ifconfig
pode ser problemático para usar em sistemas que possuem vários endereços IP atribuídos a um dispositivo de rede, dado que ele retorna apenas o primeiro. Por isso, é melhor usar o comando ip
nessas situações.
Por exemplo:
$ ip addr show wlan0 | grep -Po 'inet \K[\d.]+'
192.168.1.20
Você também pode dizer a ip
para mostrar apenas informações IPv4 para uma determinada interface de rede. Neste caso, estamos olhando apenas para a interface chamada wlan0
:
$ ip -f inet addr show wlan0 | grep -Po 'inet \K[\d.]+'
192.168.1.20