Como encontrar “apenas” endereços IP em uma rede local

2
sudo arp-scan --interface=eth0 --localnet

Eu sei que o comando acima funciona bem, mas gera tudo como endereço MAC, etc., etc. Mas preciso encontrar apenas endereços IP. É possível?

    
por gowtham nanda 18.03.2014 / 17:30

3 respostas

5

Acabei de usar awk , tail e head para conseguir o que você deseja:

sudo arp-scan --interface=eth0 --localnet| awk '{print }'|tail -n +3|head -n -2

isto dá a saída como

192.168.1.1
192.168.1.3

como eu tenho apenas esses dois no meu Lan.

Aqui awk '{print }' imprime o endereço IP que está situado na primeira coluna. tail e head remove coisas desnecessárias como o cabeçalho e mostra apenas os endereços IP.

    
por Stormvirux 18.03.2014 / 17:49
9

Eu faria isso usando apenas grep :

$ sudo arp-scan --interface=eth0 --localnet | grep -oP '^[\d.]+'
192.168.0.1 
192.168.0.2 
192.168.0.3 
192.168.0.10    
192.168.0.23    
192.168.0.72    
192.168.27.1    
192.168.27.14
192.168.27.30

Explicação:

O -P indica grep para usar expressões regulares compatíveis com Perl, em que \d corresponde a qualquer número. O -o significa "imprimir apenas a parte correspondente da linha". A expressão regular que usei corresponde à string mais longa (que é o + ) de números consecutivos ( \d ) ou pontos ( . ) que estão no início da linha ( ^ ).

    
por terdon 18.03.2014 / 18:40
2

Aqui está um liner para obter o endereço IP usando o comando ifconfig:

~$ ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print }'
192.168.1.10

Isso faz o que você queria? Ou você precisa do comando arp-scan?

Eu releio e vejo que não entendi o ponto da pergunta. arp-scan mostra os endereços IP locais da rede e mostrei apenas o IP da máquina com ifconfig . Abaixo está uma versão da solução de término acima somente usando a biblioteca PCRE. O Ubuntu teve um problema com o pcre e o grep quando tentei.

$ sudo arp-scan --interface=eth0 --localnet | grep -o ^[0-9.]*
    
por Michael McGarrah 18.03.2014 / 17:42