Muszę znaleźć adres IP Raspberry PI w sieci lokalnej bez podłączania Raspberry do monitora. Jak to zrobić w systemach Linux lub Mac OS?

Komentarze

Odpowiedź

Adresy MAC wszystkich urządzeń malin rozpoczynają się od B8: 27: EB (w przypadku RPi4 B zaczynają się one od dc:a6:32, w razie potrzeby zastąp).

Tak więc w systemach * nix można to osiągnąć wykonując następujące polecenie:

nmap -sP 192.168.1.0/24 | awk "/^Nmap/{ip=$NF}/B8:27:EB/{print ip}" 

gdzie 192.168.1.* będzie maską Twojej sieci lokalnej. Otrzymasz odpowiedź taką jak:

Nmap scan report for raspberrypi.localnetwork.lan (192.168.1.179) 

192.168.1.179 to adres IP Raspberry Pi w Twojej sieci.

Jeśli jesteś w systemie Mac możesz zainstalować program Homebrew nmap :

brew install nmap 

W Windows , możesz użyć Wireshark i następującego filtra wyświetlania:

eth.addr[0:3] == B8:27:EB 

Komentarze

  • Lub z mniejszą liczbą kresek: nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'
  • Dziękuję @ripat, to o wiele więcej zwięzły – zaktualizowany! Jeden mały szczegół, musisz uruchomić jako administrator lub nmap nie wyświetli adresu MAC.
  • Nie docenisz wagi tej odpowiedzi, dopóki nie spróbujesz bezgłośnie zlokalizować swojego raspberrypi w środowisku biurowym, w którym Adresy IP ' są generowane za pomocą protokołu DHCP. Pozdrawiam @ripat
  • Ta odpowiedź nie ' nie działa, ponieważ nmap nie ' nie wypluł nazwy hostów dla mnie. Jednak zainspirowało mnie to do wyszukania otwartych portów ssh za pomocą nmap i umożliwiło mi to znalezienie pi: sudo nmap -p 22 --open -sV 192.168.0.0/24 według tego Koleś ' post .
  • to nie ' t ” sudo nmap -sP 192.168.1.0/24″ (pracowało mi)?

Odpowiedź

Jeśli „używasz systemu MacOS lub Linux, wypróbuj ten:

$ arp -na | grep -i b8:27:eb 

W systemie Windows możesz użyj:

arp -a | findstr b8-27-eb 

W RPi 4B musisz użyć innego ciągu do porównania (dc:a6:32:be:95). Możesz sprawdź to na swoim RPi przez

ip -br link 

Dla każdej karty sieciowej będą wpisy. eth0 to internet kablowy, wlan0 to WiFi.

Komentarze

  • To rozwiązanie jest znacznie szybsze niż rozwiązanie nmap!
  • To rozwiązanie zadziałało dla mnie, w przeciwieństwie do th Rozwiązanie e nmap, które dało tylko część listy.
  • To pokaże tylko hosty, które trafiły do twoich tablic arp, więc czasami pomija te ciche. Może pomóc najpierw wykonać skanowanie nmap.
  • Może, ale dla mnie to nigdy nie zawiodło. Poza tym ' to łatwa pierwsza próba.
  • Dzięki za to. Zmodyfikowałem go nieco i używam teraz arp -n | awk '/b8:27:eb/ {print $1}'.

Odpowiedź

Używam mDNS / Bonjour, aby nadać mojemu Pi lokalną nazwę, taką jak pi.local. Nie muszę znać jego adresu IP i to działa w przypadku skrótów i kiedy trzeba osadzić łącze …

Jak i dlaczego przypisać lokalna nazwa dla twojego Pi

Komentarze

  • Świetnie! Kiedyś majstrowałem przy /etc/hosts lokalnie, aby uzyskać tę funkcję na moim pulpicie, jest to DUŻO lepsze rozwiązanie! Dziękuję bardzo za wskaźnik!

Odpowiedź

Jeśli chcesz użyć do tego aplikacji z graficznym interfejsem użytkownika, możesz użyć narzędzia Yakala ( https://github.com/mozcelikors/yakala ) dla Debiana / Ubuntu. To narzędzie pomaga nie tylko wyszukiwać dostępne sieci typu B i typu C, ale także umożliwia bezpośrednie połączenie SSH z siecią:

sudo add-apt-repository ppa:mozcelikors/yakala sudo apt-get update sudo apt-get install yakala 

lub

git clone https://github.com/mozcelikors/yakala cd yakala && sudo ./install.sh 

https://raw.githubusercontent.com/mozcelikors/yakala/master/docs/img/peekx2.gif

Wyłączenie odpowiedzialności: Jestem twórcą Yakala. Wszelkie sugestie / błędy są traktowane bardzo poważnie.

Komentarze

  • Sieci klasowe zostały porzucone w 1993 roku, czyli bardzo dawno temu.
  • Co to jest pełna klasa sieci?

Odpowiedź

Domyślnie nazwa raspberry to raspberrypi.Możesz po prostu „pingować raspberrypi”, a odpowiedź ICMP echo da ci adres IP. U mnie to zadziałało. Upewnij się, że serwer DHCP jest osiągalny, ponieważ karta sieciowa maliny jest domyślnie w trybie klienta DHCP. W przeciwnym razie malina otrzyma adres APIPA.

Odpowiedź

W Linuksie i MAC możesz także wpisać „arp – a” w terminalu, aby uzyskać listę podłączonych urządzeń, poszukaj tego z B8, na przykład: 192.168.4.5 @ B8 … będzie adresem IP raspberry pi.

Odpowiedź

Używam darmowego Fing w moim smartfonie z Androidem. Skanuje sieć i pokazuje podłączone urządzenia według typu, w tym Raspberry Pi, a także skanuje dostępne porty. Przydatne, aby sprawdzić, czy włączone są SSH, internet lub VNC i działa.

Odpowiedź

Możesz też uzyskać dostęp do routera przez przeglądarkę i znaleźć urządzenie z Androidem – prawie każdy interfejs graficzny routera ma usługa, w której możesz sprawdzić wszystkie urządzenia, które są aktualnie podłączone do Twojej sieci.

Odpowiedź

Jeśli używasz MacOS, użyj PiFinder , jest to aplikacja, która poda Ci adres IP Raspberry Pi w Twojej sieci.

Odpowiedź

Skopiuj poniższe informacje do terminala / konsoli / powłoki:

for i in $(jot - 1 254); do ping -t 1 192.168.1.$i && arp -a | cut -f 2,4 -d " " | tr [:lower:] [:upper:] | grep B8:27:EB; done 

Dostosuj 192.168.1. do swojej sieci.

wynik będzie wyglądał mniej więcej tak:

(192.168.1.109) B8: 27: EE: DD: CC: A

192.168.1.109 to adres IP Twojego Raspberry Pi… 🙂

Odpowiedź

Umieść to w pi.php na swoim serwerze internetowym:

<?php $fp = fopen("pi", "w"); fwrite($fp, $_REQUEST["ip"],1000); fclose($fp); ?> 

Być może będziesz musiał utworzyć plik pi na swoim serwerze WWW z uprawnieniami do zapisu w sieci serwer.

Umieść

curl http://yourwebserver/pi.php -d ip=`hostname -I` 

w /etc/rc.local na swoim pi.

Uzyskaj adres IP swojego pi, przeglądając http://yourwebserver/pi

Odpowiedź

Gdy używasz nowej instalacji NOOBS lub Raspbian, domyślna nazwa hosta to „raspberrypi”, aw niektórych sieciach konfiguracje ork (np. jeśli mDNS jest używany i skonfigurowany) możesz użyć „raspberrypi.local”. Inną opcją jest uruchomienie arp -a i wyszukanie raspberrypi

UWAGA: To nie zadziała w każdej instancji.

Komentarze

  • Ta odpowiedź wydaje się mieszać kilka rzeczy: różne wersje IP, DNS i może mDNS. Zwykle nie można użyć .local div id = „777e000179”>

t zależą od IPv6, a także nie od obecności routera. Gdy dostępna jest obsługa mDNS, wtedy pi-name.local rozwiązuje, IPv6 lub nie. Niektóre routery domowe używają również. ich lokalna domena DNS, również jest niezależna od IPv6 i zależy od modelu routera. Niektóre routery domowe używają różnych domen, na przykład pi-name.fritz.box.

Odpowiedź

Mój router przypisuje nowo odkrytym systemom adresy IP zaczynające się od 192.168.1.2, sekwencyjnie. Pewnego dnia przeszedłem przez każdy system w moim domu i zarezerwowałem dla nich adresy.

W ten sposób, kiedy tworzę nowy system, są szanse, że jego adres IP będzie 192 .169.1.18.

Inny sposób korzystania z konsoli szeregowej. Możesz użyć programu terminala szeregowego, aby zalogować się do swojego raspberry pi. Sugerowałbym użycie ustawienia 8N1 (8-bitów, bez bitu parzystości, 1 bit stopu) z prędkością (szybkością transmisji) 115200. Będziesz potrzebował złącza USB do portu szeregowego (3V3).

Odpowiedź

„Fing” lub „Net Analyzer” w systemie Android . Pokazuje całą twoją sieć.

Odpowiedź

Jeśli korzystasz z systemu Windows, sugeruję wypróbowanie tego skryptu. Jest to głównie bazuje na komendzie „arp -a”, ale oszczędza ci to trochę dodatkowego kopania i pomaga, gdy twojego Raspberry nie ma jeszcze w tablicy Arp.

Utwórz plik tekstowy z następującą zawartością i zmień jego nazwę na find_raspberry_pi.bat

@echo off :: This script, run from a Windows (10) machine, finds a Raspberry Pi on local network set raspIp= set myip= set subnet= :: Get IP for local PC for /f "tokens=1-2 delims=:" %%a in ("ipconfig^|find "IPv4"") do set myip=%%b set myip=%myip:~1% echo IP for local PC: %myip% :: Get subnet set subnet=%myip% setlocal enabledelayedexpansion for /l %%a in (1,1,31) do if NOT "!subnet:~-1!"=="." set subnet=!subnet:~0,-1! set subnet=%subnet:~0,-1% setlocal disabledelayedexpansion echo Subnet: %subnet% echo. :top :: Loop through arp table entries and look for Raspberry Pi"s MAC address for /f "tokens=1" %%f in ("arp -a ^| findstr b8-27-eb") do (set raspIp=%%f) if "%raspIp%"=="" ( echo Discovering network... :: Ping all IPs in subnet from 1 to 254 for /L %%N in (1,1,254) do start /b ping -n 1 -w 200 %subnet%.%%N >nul timeout 1 >nul goto :top ) else ( echo Found Raspberry PI with IP: %raspIp% ) echo. pause 

Wyłączenia odpowiedzialności :

  1. Nie jestem autorem oryginalnego skryptu, po prostu dostosowałem go trochę do pracy z Raspberry Pi. Niestety nie mogę znaleźć oryginalnego współtwórcy.
  2. To nie jest kuloodporne, nie będzie działać, jeśli podsieć, którą rozpoczyna skanowanie, nie jest właściwa.

Mimo to korzystałem z niego wiele razy i to „proste rozwiązanie

Odpowiedź

W 2020 roku zaakceptowana odpowiedź już nie działa, ponieważ Raspberry Pi jest dostarczany z innym zakresem adresów MAC. Mógłbym po prostu dodać „nowy” adres MAC jako komentarz, ale ciąg znaków mógłby się zmieniać w każdym modelu. Oto coś, co jest bardziej przyszłościowe.

$ sudo nmap -sP 192.168.150.0/24 |grep "Raspberry Pi Trading" -B2 Nmap scan report for pi4-01.lan (192.168.150.186) Host is up (0.037s latency). MAC Address: DC:A6:32:1B:35:6A (Raspberry Pi Trading) 

Główna różnica powyżej: nie zakładamy wzorca MAC, po prostu grep dla (podsumowanie), ponieważ ta etykieta jest dostarczana przez nmap. Ponieważ nmap jest stale aktualizowany, zawiera wewnętrzne tabele adresów MAC Raspberry Pi (lub używa innych kryteriów do wykrywania) i możemy założyć które będą nadal działać.

OSTRZEŻENIE: Jeśli skan nie zidentyfikuje wszystkich pisarzy, o których wiesz, że są włączone sieć, a następnie powtórz skanowanie – do 10 razy. Pi z obsługą sieci Power Management:on może nie zawsze odpowiadać na skanowanie.

Zarządzanie energią może być problem dla Ciebie, jeśli skanujesz w poszukiwaniu wielu Pis w sieci LAN, ponieważ powtarzane skanowanie może wykryć jedno Pi, ale nie inne . W takim przypadku powtórz skanowanie, poszukaj różnic . (Aby sprawdzić, czy Pi ma włączone zarządzanie energią, ssh do Pi i uruchom: /sbin/iwconfig wlan0|grep Management)

Odpowiedz er

Zakładam, że nie możesz połączyć się ze swoim PI, w przeciwnym razie znasz jego adres IP.

Jeśli wejdziesz na stronę swojego routera (zwykle coś jak 192.168.1.1 w przeglądarce) tam powinieneś mieć sekcję z już podłączonymi urządzeniami. Możesz spróbować podłączyć i odłączyć PI (i jedno urządzenie powinno pojawić się / zniknąć z listy)

Odpowiedź

Spróbuj tego pierwszy:

arp -a | grep -E --ignore-case "b8:27:eb|dc:a6:32" 

Dwa ciągi szesnastkowe (b8:27:eb|dc:a6:32) w tym poleceniu odzwierciedlają dwa OUI wartości używane przez ” The Foundation ” do produkcji wszystkich urządzeń RPi – poprzez RPi ver 4B w chwili pisania tego tekstu. Jeśli RPi nie znajduje się w pamięci podręcznej arp to polecenie nie przyniesie niczego użytecznego. W takim przypadku utwórz następujący plik w swoim ulubionym edytorze i zapisz / zapisz go jako pingpong.sh:

#!/bin/sh : ${1?"Usage: $0 ip subnet to scan. eg "192.168.1.""} subnet=$1 for addr in `seq 0 1 255 `; do ( ping -c 3 -t 5 $subnet$addr > /dev/null ) & done arp -a | grep -E --ignore-case "b8:27:eb|dc:a6:32" 

uczyń go wykonywalnym i uruchom go (użyj swojego adresu sieciowego, niekoniecznie 192.168.1. ):

$ chmod 755 pingpong.sh $ ./pingpong.sh 192.168.1. 

Twoje wyniki mogą wyglądać następująco :

raspberrypi3b.local (192.168.1.131) at b8:27:eb:1:2:3 on en0 ifscope [ethernet] raspberrypi4b.local (192.168.1.184) at dc:a6:32:2:3:4 on en0 ifscope [ethernet] 

W tym przypadku nazwa hosta pojawia się dzięki uprzejmości mDNS. Jeśli nie używasz / nie używasz mDNS / avahi / etc, nazwa hosta należy zastąpić znakiem: ?.

Odpowiedź

Raspbian używa rzecz o nazwie mDNS, która umożliwia dostęp do twojego Raspberry pi za pomocą nazwy hosta raspberrypi.local.

Więc nie „Nie trzeba już szukać adresu IP, po prostu połącz się w ten sposób:

ssh [email protected] 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *