Poucas respostas parecem estar usando a mais recente ip
de comandos (substituto para ifconfig
) então aqui é aquele que usa ip addr
, grep
e awk
simplesmente imprimir o endereço IPv4 associados à wlan0
interface:
ip addr show wlan0|grep inet|grep -v inet6|awk '{print $2}'|awk '{split($0,a,"/"); print a[1]}'
Embora não seja a solução mais compacta ou sofisticada, é (sem dúvida) fácil de entender (veja a explicação abaixo) e modificar para outros fins, como obter os últimos 3 octetos do endereço MAC como este:
ip addr show wlan0|grep link/ether|awk '{print $2}'|awk '{split($0,mac,":"); print mac[4] mac[5] mac[6]}'
Explicação: ip addr show wlan0
informações de saída associadas à interface de rede nomeada wlan0
, que deve ser semelhante a esta:
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:04:06:ab brd ff:ff:ff:ff:ff:ff
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
valid_lft forever preferred_lft forever
inet6 fe80::d340:5e4b:78e0:90f/64 scope link
valid_lft forever preferred_lft forever
Próxima grep inet
filtra as linhas que não contêm "inet" (IPv4 e IPv6 configuração) e grep -v inet6
filtra as linhas restantes que fazer conter "inet6", o que deve resultar em uma única linha como esta:
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
Por fim, o primeiro awk
extrai o campo "172.18.18.1/24" e o segundo remove a abreviação da máscara de rede, deixando apenas o endereço IPv4.
Além disso, acho que vale a pena mencionar que, se você estiver fazendo scripts, muitas vezes existem muitas ferramentas mais ricas e / ou mais robustas para obter essas informações, que você pode querer usar. Por exemplo, se estiver usando Node.js existe ipaddr-linux
, se estiver usando Ruby, existe linux-ip-parser
, etc.
Veja também /unix/119269/how-to-get-ip-address-using-shell-script