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
- możliwy duplikat SSH do Raspberry Pi bez znajomości adresu IP
- Aplikacja Lan Scan na smartfonie pokaże wszystkie urządzenia w Twojej sieci.
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
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 :
- Nie jestem autorem oryginalnego skryptu, po prostu dostosowałem go trochę do pracy z Raspberry Pi. Niestety nie mogę znaleźć oryginalnego współtwórcy.
- 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]