Am nevoie să găsesc adresa IP Raspberry PI în rețeaua locală fără a conecta Raspberry la un monitor. Cum o fac pe sistemele Linux sau Mac OS?
Comentarii
- posibil duplicat al SSH în raspberry pi fără să știe adresa IP
- Aplicația de scanare Lan pe telefonul inteligent va afișa toate dispozitivele din rețeaua dvs.
Răspundeți
Toate dispozitivele cu zmeură Adresele MAC au început cu B8: 27: EB (pentru RPi4 B încep cu dc:a6:32
, înlocuiți acolo unde este cazul).
Deci, pe sistemele * nix , acest lucru poate fi realizat executând următoarea comandă:
nmap -sP 192.168.1.0/24 | awk "/^Nmap/{ip=$NF}/B8:27:EB/{print ip}"
unde 192.168.1.*
va fi masca dvs. de rețea locală. Veți primi un răspuns de genul:
Nmap scan report for raspberrypi.localnetwork.lan (192.168.1.179)
192.168.1.179 este adresa IP Raspberry Pi din rețeaua dvs.
Dacă sunteți pe un sistem Mac puteți utiliza Homebrew pentru a instala nmap :
brew install nmap
Pe Windows , puteți utiliza Wireshark și utilizați următorul filtru de afișare:
eth.addr[0:3] == B8:27:EB
Comentarii
- Sau cu mai puține țevi:
nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'
- Mulțumesc @ripat, asta este mult mai mult concis – actualizat! Un mic detaliu, trebuie să rulați ca administrator sau nmap nu va afișa adresa MAC.
- Nu ați aprecia importanța acestui răspuns până când nu ați încercat să localizați raspberrypi fără cap într-un cadru de birou unde IP ‘ sunt eliminate folosind DHCP. Noroc pentru acest @ripat
- Acest răspuns nu a funcționat pentru mine, deoarece nmap nu ‘ nu a scuipat nume de gazdă pentru mine. Cu toate acestea, m-a inspirat să caut porturi ssh deschise cu nmap și asta mi-a permis să găsesc pi:
sudo nmap -p 22 --open -sV 192.168.0.0/24
în acest sens tip ‘ s postare . - nu este ‘ t ” sudo nmap -sP 192.168.1.0/24″ suficient (s-a plictisit pentru mine)?
Răspuns
Dacă rulați MacOS sau Linux, încercați aceasta:
$ arp -na | grep -i b8:27:eb
Pe Windows, puteți utilizați:
arp -a | findstr b8-27-eb
Pe RPi 4B, trebuie să utilizați șiruri diferite pentru comparație (dc:a6:32:be:95
). Puteți verificați-l pe RPi prin
ip -br link
Vor exista intrări pentru fiecare placă de rețea. eth0
este internet prin cablu, wlan0
este WiFi-ul.
Comentarii
- Această soluție este mult mai rapidă decât o soluție nmap!
- Această soluție a funcționat pentru mine, spre deosebire de th Soluția e nmap care a dat doar o parte din listă.
- Aceasta va afișa doar gazdele care au intrat în tabelele dvs. arp, așa că uneori le lipsesc cele liniștite. Ar putea fi util să faceți o scanare nmap o dată mai întâi.
- S-ar putea, dar pentru mine acest lucru nu a eșuat niciodată. În plus, ‘ este o primă încercare ușoară.
- Vă mulțumim pentru asta. L-am modificat ușor și am folosit
arp -n | awk '/b8:27:eb/ {print $1}'
acum.
Răspunde
Folosesc mDNS / Bonjour pentru a da Pi-ului meu un nume local ca pi.local. Nu trebuie să știu adresa IP a acesteia și acest lucru funcționează pentru comenzi rapide și când trebuie să încorporați un link …
Cum și de ce să atribuiți un nume local pentru Pi
Comentarii
- Minunat! Obișnuiam să mă joc cu
/etc/hosts
local pentru a obține această funcționalitate pe desktopul meu, aceasta este o soluție mult mai bună! Mulțumesc mult pentru pointer!
Răspunde
Dacă doriți să utilizați o aplicație GUI pentru aceasta, puteți utiliza instrumentul Yakala
( https://github.com/mozcelikors/yakala ) pentru Debian / Ubuntu. Acest instrument vă ajută nu numai să căutați rețelele de tip B și de tip C disponibile, ci vă ajută și să direct SSH în rețea:
sudo add-apt-repository ppa:mozcelikors/yakala sudo apt-get update sudo apt-get install yakala
sau
git clone https://github.com/mozcelikors/yakala cd yakala && sudo ./install.sh
Declinare de responsabilitate: Sunt creatorul lui Yakala. Orice sugestie / eroare este luată foarte în serios.
Comentarii
- Rețelele clasice au fost abandonate în 1993, ceea ce este cu mult timp în urmă.
- Ce este clasificarea în rețea?
Răspuns
În mod implicit, numele zmeurii este raspberrypi.Puteți pur și simplu „ping raspberrypi”, iar răspunsul la ecoul ICMP vă oferă adresa IP. A funcționat pentru mine. Asigurați-vă că serverul DHCP este accesibil, deoarece NIC-ul raspberry este implicit în modul client DHCP. În caz contrar, raspberry primește o adresă APIPA.
Răspuns
În linux și MAC, puteți introduce și „arp – a” în terminal și puteți obține o listă de dispozitive conectate, căutați-l pe cel cu B8 în el, de exemplu: 192.168.4.5 @ B8 … va fi raspberry pi IP.
Răspuns
Folosesc Fing din smartphone-ul meu Android. Scanează rețeaua și afișează dispozitivele conectate după tip, inclusiv Raspberry Pi, precum și scanează porturile disponibile. La îndemână pentru a vedea dacă SSH, web sau VNC sunt activate și rulează.
Răspuns
Sau ai putea accesa routerul prin browser și găsi dispozitivul tău Android-aproape fiecare router GUI are un serviciu în care puteți verifica toate dispozitivele care sunt conectate în prezent la rețeaua dvs.
Răspuns
Dacă rulați MacOS, utilizați PiFinder , este o aplicație care vă va spune IP-ul unui Raspberry Pi din rețeaua dvs.
Răspuns
Copiați următoarele în Terminal / Consolă / Shell:
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
Vă rugăm să adaptați 192.168.1. la rețeaua dvs. individuală.
ieșirea va arăta cam așa:
(192.168.1.109) B8: 27: EE: DD: CC: A
192.168.1.109 ar fi IP-ul tău Raspberry Pi … 🙂
Răspuns
Puneți acest lucru în pi.php pe serverul dvs. web:
<?php $fp = fopen("pi", "w"); fwrite($fp, $_REQUEST["ip"],1000); fclose($fp); ?>
Este posibil să fie necesar să creați fișierul pi pe serverul dvs. web cu permisiuni de scriere pentru web server.
Puneți
curl http://yourwebserver/pi.php -d ip=`hostname -I`
în /etc/rc.local pe pi.
Obțineți adresa IP din pi-ul tău navigând http://yourwebserver/pi
Răspuns
Când utilizați o nouă instalare de NOOBS sau Raspbian, numele de gazdă implicit este „raspberrypi” și în unele rețele configurații ork (adică dacă mDNS este utilizat și configurat) ați putea folosi „raspberrypi.local”. O altă opțiune este să rulați arp -a
și să căutați raspberrypi
NOTĂ: Acest lucru nu va funcționa pentru fiecare instanță.
Comentarii
- Acest răspuns pare să amestece mai multe lucruri: versiuni IP diferite, DNS și poate mDNS. Dacă
.local
poate fi utilizat, de obicei nu ‘ t depinde de IPv6 și, de asemenea, de faptul că nu există un router prezent. Când suportul mDNS este disponibil, atunci pi-name.local se rezolvă, IPv6 sau nu. Unele routere de acasă folosesc și .local ca domeniul DNS local, din nou, acesta este independent de IPv6 și depinde de modelul routerului. Unele routere de acasă folosesc domenii diferite, cum ar fi pi-name.fritz.box.
Răspuns
Ruterul meu atribuie sistemelor nou descoperite o adresă IP începând de la 192.168.1.2, secvențial. Am trecut prin fiecare sistem de acasă într-o zi și le-am rezervat adresele.
În acest fel, atunci când creez un sistem nou, este posibil ca adresa IP să fie 192 .169.1.18.
Un alt mod de a utiliza consola serială. Puteți utiliza un program terminal serial pentru a vă conecta la raspberry pi. Aș sugera utilizarea setării 8N1 (8 biți, fără bit de paritate, 1 bit de oprire) cu o viteză (baud rate) de 115.200. Veți avea nevoie de un conector USB to serial (3V3).
Răspuns
„Fing” sau „Net Analyzer” pe Android . Vă arată întreaga rețea.
Răspuns
Dacă vă aflați pe Windows, vă sugerez să încercați acest script. bazat pe comanda „arp -a”, dar vă economisește câteva săpături suplimentare și vă ajută atunci când Raspberry nu este deja în tabelul Arp.
Creați un fișier text cu următorul conținut și redenumiți-l ca 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
Declinări de responsabilitate :
- Nu sunt autorul scriptului original, doar l-am adaptat puțin pentru a lucra cu un Raspberry Pi. Din păcate, nu găsesc colaboratorul original.
- Nu este antiglonț, nu va funcționa dacă subrețeaua pe care începe să o scaneze nu este cea corectă.
Totuși, am folosit-o de multe ori și este „o soluție simplă
Răspuns
În 2020, răspunsul acceptat nu mai funcționează, deoarece Raspberry Pi este livrat cu o gamă diferită de adrese MAC. Aș putea adăuga „noul” MAC ca comentariu, dar șirul s-ar putea schimba din nou și din nou în fiecare model. Iată ceva care este mai rezistent la viitor.
$ 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)
Principala diferență de mai sus: nu presupunem un model MAC, doar grep pentru (rezumat), deoarece această etichetă este furnizată de nmap
în sine. Deoarece nmap
este actualizat continuu, conține tabele interne ale adreselor MAC Raspberry Pi (sau folosește alte criterii pentru a detecta) și putem presupune care va continua să funcționeze.
CAVEAT: Dacă scanarea dvs. nu identifică toate Pis pe care știți că sunt rețea, apoi repetați scanarea – de până la 10 ori. Un Pi care are rețea Power Management:on
s-ar putea să nu răspundă întotdeauna la o scanare.
Gestionarea energiei poate fi o problemă pentru dvs. dacă căutați mai multe Pis pe o rețea LAN, deoarece scanările repetate ar putea detecta unul Pi dar nu altul . În acest caz, repetarea scanărilor caută diferențe . (Pentru a confirma dacă un Pi are Power Management activat, ssh la Pi și rulați: /sbin/iwconfig wlan0|grep Management
)
Răspundeți er
Presupun că nu vă puteți conecta la PI, altfel știți IP-ul acestuia.
Dacă accesați pagina routerului (de obicei ceva cum ar fi 192.168.1.1 în browserul dvs.) acolo ar trebui să aveți o secțiune cu dispozitivele deja conectate. Puteți încerca să conectați și să deconectați PI (și un dispozitiv ar trebui să apară / să dispară din listă)
Răspuns
Încercați acest lucru mai întâi:
arp -a | grep -E --ignore-case "b8:27:eb|dc:a6:32"
Cele două șiruri hexagonale (b8:27:eb|dc:a6:32
) din această comandă reflectă cele două OUI valorile utilizate de ” Fundația ” pentru producerea tuturor dispozitivelor RPi – prin RPi ver 4B începând cu această scriere. Dacă RPi nu este în cache arp această comandă nu va produce nimic util. Dacă acesta este cazul, creați următorul fișier în editorul dvs. preferat și salvați-l / scrieți-l ca 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"
faceți-l executabil și rulați-l (utilizați adresa dvs. de rețea aici, nu neapărat 192.168.1. ):
$ chmod 755 pingpong.sh $ ./pingpong.sh 192.168.1.
Rezultatele dvs. pot apărea după cum urmează :
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]
În acest caz, numele gazdei apare prin amabilitatea mDNS. Dacă nu aveți / nu folosiți mDNS / avahi / etc, numele gazdei va fi să fie înlocuit cu caracterul: ?
.
Răspuns
Raspbian folosește un lucru numit mDNS
, care vă permite să accesați zmeura pi printr-un nume de gazdă raspberrypi.local
.
Deci, nu „Nu mai trebuie să căutați o adresă IP, conectați-vă astfel:
ssh [email protected]