Existem algumas coisas que você pode fazer. Supondo que você tenha conexão Ethernet única indo do laptop para o framboesa, então arp-scan
será suficiente. Primeiro, descubra qual é o nome da sua interface ethernet. No meu caso, é eth3
. Assim, aqui está um exemplo:
bash-4.3$ sudo arp-scan -I eth3 --localnet
[sudo] password for xieerqi:
Interface: eth3, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.42.0.40 b8:27:eb:96:38:91 (Unknown)
1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.459 seconds (175.46 hosts/sec). 1 responded
Na saída, você pode ver que o meu Raspberry tem endereço IP 10.42.0.40.
O arp-scan
é uma abordagem muito simples e não requer muito suor. Métodos alternativos também podem ser usados. Aqui estão alguns deles:
- Conhecendo os primeiros 3 octetos da rede (por exemplo, através do comando
ip addr show eth3
no meu caso), você pode escrever um script simples que pinga o intervalo de hosts. (Veja abaixo o script python que faz isso). -
fping
é alternativa ao comando padrãoping
, que permite que o intervalo do host seja testado - Você pode usar
nmap
para realizar a descoberta de host em diversos métodos. Em particular, este comando:nmap -e eth3 -sn 10.42.0.0/24
funcionaria melhor - instruinmap
a realizar somente a descoberta de host com a opção-sn
(que sob o capô envia solicitações ARP para transmitir o endereço MAC), na interface especificada por-e
opção. A10.42.0.0/24
é a notação CIDR para rede. Muito simples. -
Wireshark
também pode ser usado para capturar pacotes na sua interface Ethernet. É claro que o seu Raspberry tem que enviar alguns pacotes em primeiro lugar para eles serem capturados, então pode não funcionar se você não tiver um framboesa "falante". Você pode, no entanto, iniciar a captura, filtrar por protocolo UDP, desconectar e reconectar em Raspberry. Você deve ver a solicitação e a resposta do DHCP indo para ela Osdispositivoscriamsuatabelaarpaolongodotempoquandooshostsaparecem/desaparecemdarede,portanto,vocêtambémpodeusarocomando
arp-a
.SevocêestáusandooUbuntupadrãoenãoinstalounenhumservidorDHCPalternativo,vocêpodeverificaroarquivo
dnsmasq
leasesparaoqualoIPfoiatribuídoaosseusdispositivos.Porexemplo:bash-4.3$cat/var/lib/misc/dnsmasq.leases1479095355b8:27:eb:96:38:9110.42.0.40localhost*
Vejaminhaperguntarelacionadaaqui:
Concessão de DHCP para o pi de framboesa não encontrada
nmap
e Wireshark
serão bastante úteis se você tiver uma chave ethernet com vários dispositivos conectados a ela.
Já que mencionei o script com ping
, aqui está um:
from subprocess import *
network = '10.42.0.'
for num in range(255):
i = str(num)
dn = open('/dev/null','w')
try:
print('checking ' + network + i)
check_call(['ping', '-c','1', '-W',
'1','-q',network + i],stdout=dn)
except CalledProcessError:
pass
#print('10.42.0.' + i + ' is down')
else:
print('>>> ' + network + i + ' is up')
Isso fará um ping no intervalo de 256 endereços da minha rede ( 10.42.0.x
) e indicará qual dos hosts está ativo. O ping expira após 1 segundo, portanto, ele levará 256 segundos para verificar tudo. Se você tiver apenas um framboesa, pode editar o script para sair se um ip responder ao ping, acelerando assim o processo. Você também pode criar um determinado número de segmentos. No entanto, arp-scan
continua a ser uma alternativa mais rápida.