Como identificar um Pi


13

Eu tenho uma pilha de cinco Pis, cada uma com um nome de host separado e estão na mesma rede. Preciso identificar fisicamente cada Pi de outro Pi, talvez piscando os LEDs internos de uma maneira reconhecível. Alguma idéia de como eu poderia fazer isso com o Bash, idealmente, e sem conectar nada?


1
Você pode controlar os LEDs integrados, embora pareça haver algumas restrições em alguns modelos. Você provavelmente deseja usar o ACT verde, pois o PWR vermelho pode não ser tão facilmente cooptado. raspberrypi.stackexchange.com/search?q=onboard+leds
goldilocks


1
você só queria executar algo no bash para identificar um Pi específico de cada vez, ou queria algo que resultasse nos Pi sempre "piscando" sua própria seqüência única?
Jaromanda X

Respostas:


25

Em pelo menos um Pi 3, você pode ativar o LED verde (atividade do cartão SD) constantemente, com o seguinte comando (como root):

echo 1 > /sys/class/leds/led0/brightness

Agora que Pi terá o LED verde aceso, o que facilita a identificação e identificação.

Para colocar o LED de volta ao estado padrão:

echo 0 > /sys/class/leds/led0/brightness
echo mmc0 > /sys/class/leds/led0/trigger

Itere todos os seus Pis dessa maneira até que todos sejam endereçados e rotulados de acordo.



1
você pode fazer isso em um Pi 1 e 2 também
Jaromanda X 10/10/18

@stevieb que resolveu o problema muito bem, obrigado. Desligar e reiniciar ou desconectar da rede não estavam em execução, pois preciso manter o cluster em funcionamento. Eu só precisava identificar qual Pi estava no topo da pilha para que eu pudesse ssh nela e ligar novamente a porta HDMI para que eu pudesse conectá-la a uma tela.
Nick

Obrigado @Nick. Se ele realmente resolveu o seu problema, aceite a resposta.
stevieb

13

Encerre um deles. Deve haver um comportamento reconhecível a partir da luz verde, que acabará se apagando.

Em seguida, coloque um rótulo nesse pi com seu nome de ip.

Então você pode iniciar esse novamente.

Repita até que todos estejam marcados.

Ou você pode desligá-los todos e, em seguida, apresentá-los um de cada vez e ver qual o número de ip que aparece no seu roteador.

Um rótulo físico ou um nome de host com uma descrição muito boa de onde eles estão, se isso não mudar, é uma coisa muito útil. Se eles usam Ethernet, você pode enrolar a etiqueta ao redor do cabo.


3

Eu recomendaria apenas puxar o cabo Ethernet e executar ping em cada Pi por vez. O que não responde então? Essas outras soluções são legais, mas o ping é permanente. Se, por algum motivo, você filtrou as solicitações icmp nesses Pis, pode usar o nping no pacote nmap: nping —arp 192.168.0.25

Se você estiver com pressa, use o Fing (gratuito) da Play / App Store para fazer uma varredura rápida do arp e veja qual host cai quando você puxa um cabo.

E atribua IPs estáticos com base no endereço MAC no seu dhcpd.conf para evitar esse tipo de problema. O ISC-DHCPD é exatamente o que você precisa. É um serviço bonito. Não use o dnsmasq a menos que você precise de muitos recursos ++.

Imprima etiquetas dinâmicas com MACs, IPs e nomes de host e cole-os em cima de cada Pi. Não confie no mDNS / avahi / bonjour / auto-nothing, não é infalível. Além disso, o avahi-daemon teve alguns sérios problemas de segurança ao longo dos anos.

/etc/hosts permanece rei em pequenas redes de laboratório / SoHo, sempre o uso como referência para meus clientes estáticos dhcpd.


1
Quando me preocupei em começar a usar meu Pi (único) como servidor dhcp, criei um domínio falso (.ivan, é claro) e fiz entradas DNS para coisas que tenho um dhcp estático configurado para ... o que muda para ser todos os meus dispositivos. Os hóspedes obtêm o verdadeiro DHCP. Muito mais fácil do que /etc/hostsespecialmente para dispositivos onde você não pode fazer isso - como o meu iphone.
ivanivan

@ivanivan Eu mantenho apenas entradas do / etc / hosts para entradas estáticas do dhcp. É mais fácil do que grep dhcpd.conf
user2497
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.