这是一个奇怪的问题,基本上我有一台计算机通过以太网电缆连接到一台机器。没有其他网络或互联网访问。机器设置了一个网络,允许您远程登录。
我需要最简单的方法来确定设备正在使用的ip范围。这将变成python脚本。它不仅仅是明显的192.168.x.x
我正在查看'arp'命令,还有一个名为'netifaces'的库。我不确定我是否可以使用更简单的东西。它必须适用于Linux,OSX和Windows。该机器正在运行Android OS
基本上,我只需要能够以最简单的方式确定设备当前使用的ip范围。
命令'arp -a'现在似乎是最有希望的。
答案 0 :(得分: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'
答案 1 :(得分:0)
当接口无法获取地址时,APIPA使用IPv4链路本地范围169.254.0.0/16
为主机分配IP地址。关于此范围有一些规则,例如您无法对范围进行子网划分,无法路由等。有关详细信息,请参阅RFC 3927, Dynamic Configuration of IPv4 Link-Local Addresses。
您确实需要确定链接另一端的设备是否使用此范围。如果它是专用设备,它可能没有,并且它将具有手动分配的固定地址。如果是这种情况,您将无法通过链接本地地址与其联系。