我需要在本地網絡上找到Raspberry PI IP地址,而無需將Raspberry連接到監視器。在Linux或Mac OS系統上該如何做?
我需要在本地網絡上找到Raspberry PI IP地址,而無需將Raspberry連接到監視器。在Linux或Mac OS系統上該如何做?
所有樹莓派設備的MAC地址均以 B8:27:EB 開頭(對於RPi4 B,它們均以 dc:a6:32
開頭,並在適當的地方進行替換)。
因此,在* nix 系統上,可以通過執行以下命令來實現:
nmap -sP 192.168.1.0/24 | awk'/ ^ Nmap / {ip = $ NF} / B8:27:EB / {print ip}'
其中 192.168.1。*
為您的本地網絡掩碼。您將得到類似的答案:
raspberrypi.localnetwork.lan(192.168.1.179)的Nmap掃描報告
192.168.1.179是Raspberry Pi網絡上的IP地址。
如果您使用的是 Mac 系統,則可以使用 Homebrew安裝 nmap :
brew install nmap
在 Windows 上,您可以使用 Wireshark並使用以下顯示過濾器:
eth.addr [0:3] == B8:27:EB
如果您正在運行MacOS或Linux,請嘗試以下一種方法:
$ arp -na | grep -i b8:27:eb
在Windows上,您可以使用:
arp -a | findstr b8-27-eb
在RPi 4B上,您需要使用不同的字符串進行比較( dc:a6:32:be:95
)。您可以通過以下方式在RPi上進行檢查:
ip -br鏈接
每個網卡都有條目。 eth0
是有線互聯網, wlan0
是WiFi。
我使用mDNS / Bonjour為我的Pi賦予一個本地名稱,例如pi.local。我不需要知道它的IP地址,它可以用作快捷方式,以及何時需要嵌入鏈接...
如果要為其使用GUI應用程序,則可以為Debian / Ubuntu使用 Yakala
工具( https://github.com/mozcelikors/yakala) 。此工具不僅可以幫助您搜索可用的B型和C型網絡,還可以幫助您直接SSH進入網絡:
sudo add-apt-repository ppa:mozcelikors / yakalasudo apt-獲取更新udo apt-get install yakala
或
git clone https://github.com/mozcelikors/yakalacd yakala && sudo ./install.sh
免責聲明:我是Yakala的創建者。任何建議/錯誤都非常重視。
默認情況下,樹莓派的名稱是raspberrypi。您可以“ ping raspberrypi”,而ICMP回顯答復將為您提供IP地址。它為我工作。確保DHCP服務器可訪問,因為樹莓派的NIC默認處於DHCP客戶端模式。否則,覆盆子將獲得APIPA地址。
In linux and MAC, you can also type in "arp - a" in the terminal and you can get a list of connected devices, look for the one with B8 in it, example: 192.168.4.5 @ B8... will be the raspberry pi IP.
我在Android智能手機上使用免費的 Fing應用。它掃描網絡並按類型顯示連接的設備,包括Raspberry Pi,以及掃描可用的端口。方便查看SSH,Web或VNC是否已啟用並正在運行。
如果運行MacOS,請使用 PiFinder,它是一個可告訴您網絡上Raspberry Pi的IP的應用程序。
或者您可以通過瀏覽器訪問路由器並找到您的android設備-幾乎每個路由器GUI都有一項服務,您可以在其中檢查當前連接到網絡的所有設備。
將以下內容複製到您的終端機/控制台/外殼中:
for i in $(jot-1254);做ping -t 1 192.168.1。$ i && arp -a |切-f 2,4 -d“” | tr [:lower:] [:upper:] | grep B8:27:EB;完成
請為您的個人網絡調整 192.168.1。。
輸出看起來像這樣:
(192.168.1.109)B8:27:EE:DD:CC:A
192.168.1.109將是您的Raspberry Pi的IP ...:)
使用全新安裝的NOOBS或Raspbian時,默認主機名是“ raspberrypi”,在某些網絡配置中(例如,如果正在使用和配置mDNS),則可以使用“ raspberrypi.local”。另一種選擇是運行 arp -a
並查找raspberrypi
注意:這不適用於每個實例。
將其放在您的Web服務器上的pi.php中:
<?php $ fp = fopen('pi','w'); fwrite($ fp,$ _REQUEST [' ip'],1000); fclose($ fp);? >
您可能必須在具有Web服務器寫入權限的Web服務器上創建文件pi。
在/ etc / rc中Put
curl http://yourwebserver/pi.php -d ip =`hostname -I`
。
來獲取pi的IP。我的路由器為新發現的系統分配了一個以192.168.1.2開頭的ip地址。一天,我瀏覽了家裡的每個系統,並為它們保留了地址。
這樣,當我創建一個新系統時,其ip地址很可能是192.169.1.18。
使用串行控制台的另一種方法。您可以使用串行終端程序來登錄樹莓派。我建議使用速度(波特率)為115,200的8N1(8位,無奇偶校驗位,1個停止位)設置。您需要一個USB到串行(3V3)連接器。
在Android上為“ Fing”或“ Net Analyzer”。顯示整個網絡。
如果您在Windows上,建議您嘗試使用此腳本。它主要基於“ arp -a”命令,但是它可以節省一些額外的挖掘工作,並且當Raspberry不在Arp表中時可以為您提供幫助
創建具有以下內容的文本文件,並將其重命名為 find_raspberry_pi.bat
@echo off ::此腳本從以下位置運行Windows(10)機器上,在本地網絡上找到Raspberry Pi。set raspIp = set myip = set subnet = ::為/ f“ tokens = 1-2 delims =:” %% a在('ipconfig ^ |找到“ IPv4”'),請為本地PC設置myip = %% bset myip =%myip:〜1%echo IP:%myip%::為/ l %% a中的/ l %% a獲取子網集子網=%myip%setlocal enabledelayedexpansion 1,31)如果不是“!subnet:〜-1!” ==“。 set subnet =!subnet:〜0,-1!set subnet =%subnet:〜0,-1%setlocal disableelayedexpansion echo子網:%subnet%echo。:top ::遍歷arp表項並查找Raspberry Pi的MAC地址/ f“ tokens = 1”('arp -a ^ | findstr b8-27-eb')中的%% f如果(%raspIp%“ ==”“則做(設置raspIp = %% f)(回顯發現網絡。 .. ::將(1,1,254)中的/ L %% N從1到254的ping子網中的所有IP都啟動/ b ping -n 1 -w 200%subnet%。%% N >nul超時1 >nul goto:top )else(echo IP為%raspIp%的找到的Raspberry PI)echo.pause
免責聲明:
仍然,我使用了很多次,這是一個簡單的解決方案
在2020年,已接受的答案不再起作用,因為Raspberry Pi附帶了不同範圍的MAC地址。我可以只添加“新” MAC作為註釋,但是每個模型的字符串可能會一次又一次地更改。
$ sudo nmap -sP 192.168.150.0/24 | grep'Raspberry Pi Trading'-B2Nmap掃描報告pi4-01.lan(192.168.150.186)主機已啟動(延遲為0.037秒).MAC地址:DC:A6:32:1B:35:6A(Raspberry Pi Trading)
上面的主要區別:我們不假設一個MAC模式,我們只將grep用作(摘要),因為此標籤由 nmap
本身提供。由於 nmap
會不斷更新,因此它包含Raspberry Pi MAC地址的內部表(或使用其他條件進行檢測),我們可以假定它將繼續起作用。
注意::如果您的掃描未識別出您知道的所有網絡上的Pi,請重複掃描-最多進行10次。具有網絡 Power Management:on
的Pi可能並不總是響應掃描。
如果您要在局域網上掃描多個Pi,則電源管理可能對您來說是個問題,因為重複掃描可能會檢測到一個 Pi,而不會檢測到另一個 。在這種情況下,重複掃描以查找差異。 (要確認Pi是否啟用了電源管理,請SSH到Pi並運行: / sbin / iwconfig wlan0 | grep Management
)
我認為您無法連接到PI,否則您將知道其IP。
如果轉到路由器頁面(通常在瀏覽器中為192.168.1.1之類的內容),則應該有一個部分中已連接的設備。您可以嘗試插入和拔下PI(並且一台設備應該出現在列表中/從列表中消失)
請首先嘗試:
arp -a | grep -E --ignore-case'b8:27:eb | dc:a6:32'
兩個十六進製字符串( b8:27:eb | dc:dc:a6:此命令中的32
)反映了“基金會”用於生產所有RPi設備的兩個 OUI值-截至撰寫本文時,通過RPi ver 4B。如果您的RPi不在您的 arp緩存 中,此命令將不會產生任何有用的信息。如果是這樣,請在您喜歡的編輯器中創建以下文件,並將其保存/寫入為 pingpong.sh
:
#!/ bin / sh:$ {1?“用法:要掃描的$ 0 ip子網。例如'192.168.1。'”} subnet = $ 1 for`seq 0 1 255`中的地址; do(ping -c 3 -t 5 $ subnet $ addr > / dev / null)&donearp -a | grep -E --ignore-case'b8:27:eb | dc:a6:32'
使其可執行並運行(使用您的網絡地址,不一定是 192.168.1。):
$ chmod 755 pingpong.sh $ ./pingpong.sh 192.168.1。
您的結果可能如下所示:
raspberrypi3b.local(192.168.1.131),位於en0的b8:27:eb:1:2:3 ifscope [ethernet]上的dc:a6:32:2:3:4上位於dc:a6:32:2:3:4的ifscope [ethernet] raspberrypi4b.local(192.168.1.184)
在這種情況下,主機名由mDNS。如果您沒有/不使用mDNS / avahi / etc,則主機名將替換為字符:?
。