2016-09-30 27 views
-1

這是一個奇怪的問題,基本上我有一臺計算機通過以太網電纜連接到一臺機器。沒有其他網絡或互聯網訪問。機器設置了一個網絡,允許您遠程登錄到該網絡。如何確定設備使用的ip範圍?

我需要最簡單的方法來確定設備正在使用的ip範圍。這將變成一個python腳本。這不僅僅是顯而易見的192.168.x.x

我正在查看'arp'命令,還有一個名爲'netifaces'的庫。我不確定是否有更簡單的方法可以使用。它必須適用於Linux,OSX和Windows。該機器正在運行一個android操作系統基本上,我只需要能夠以最簡單的方式確定設備當前使用的ip範圍。

命令'arp -a'似乎是目前最有希望的。

+0

換句話說你試圖找到機器的ip? – coder

+0

它是什麼類型的機器?你有沒有關於它的設置文件?你說它「建立一個網絡」,它是否也可以充當DHCP服務器?您可以嘗試使用像Wireshark這樣的數據包分析器來查看是否可以在那裏找到它。 – pferate

+0

@coder是的,我可以用nmap來做,但我不知道要掃描的ip範圍。 Nmap對此非常適用,我只是無法弄清楚如何找到像'nmap xx * .0/24'這樣的掃描範圍 – user5275692

回答

0

169.254.0.0/16 IPv4的鏈路本地範圍內使用API​​PA爲主機分配IP地址時,接口有沒有其他的方式來獲得一個地址。關於這個範圍有一些規則,例如您無法對該範圍進行子網劃分,無法路由等。有關更多信息,請參閱RFC 3927, Dynamic Configuration of IPv4 Link-Local Addresses

您確實需要確定鏈路另一端的設備是否使用此範圍。如果它是一個專門的設備,它可能不會,並且它將有一個手動分配的固定地址。如果是這種情況,您將無法使用鏈接本地地址與其聯繫。

+0

這非常有幫助,謝謝! – user5275692

0

試試這個

import socket 
import fcntl 
import struct 

def get_ip_address(ifname): 
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    return socket.inet_ntoa(fcntl.ioctl(
     s.fileno(), 
     0x8915, # SIOCGIFADDR 
     struct.pack('256s', ifname[:15]) 
    )[20:24]) 

get_ip_address('eth0') # '192.168.0.110' 
+0

這不是我的機器,現在被命名爲上工作,因爲網絡接口並不總是命名爲「eth0的」,例如以太網接口: 「{HB232-123FH-J23JH}」 我編的,但這是格式。 – user5275692

+0

這會有幫助嗎? https://pypi.python.org/pypi/netifaces –

+0

你可以將它設置爲x,擺脫eth0並將其變爲變量,這是一個開始,你可以做一些工作。 – thesonyman101