我有一个非常典型的情况,我想使用ssh将(android)手机连接到同一(wifi)网络中的linux笔记本。IP是由DHCP分配的,因此我事先只知道一个客户端。知道了客户端的IP之后,我原则上可以在同一个网络中的所有可能IP上循环执行ssh命令,以查看服务器是否在监听。但是,这似乎效率很低。那么,如何确定主机的IP(知道它的MAC地址),以便可以使用ssh连接到它呢?我知道其他软件可以实现这样的功能,因此它必须是可能的。相关:我可以在客户端(假设是Linux)上为该IP动态分配主机名,以便在ssh配置文件中使用静态条目吗?
您可以通过以下两个步骤进行操作:
扫描子网以填充ARP缓存。有方法但是我建议fping
。通过在终端中运行命令bellow将其安装在Ubuntu上:
apt-get install fping
...然后扫描您的网络(例如,子网192.168.10.0/24):
fping -g 192.168.10.0/24
现在,ARP缓存已充满您子网中设备的MAC地址。
在您的ARP缓存上应用适当的过滤器以仅查看目标设备。只需使用以下命令(aa:bb:cc:dd:ee:ff
设备的MAC在哪里):
arp -n | grep -i aa:bb:cc:dd:ee:ff | cut -c-15
输出是目标设备的IP地址。
示例MAC地址已更改为小写,因为Linux以这种方式显示它(与使用大写字母的Microsoft Windows不同)
在bash脚本之后,/etc/hosts
使用名称手机将一个条目添加到主机文件(),以便您可以使用名称手机访问设备。要刷新关联的IP地址,只需再次运行即可。更改name
,mac
并将subnet
其更改为所需的值。
#!/bin/sh
name="cellphone"
mac=aa:bb:cc:dd:ee:ff
subnet=192.168.10.0/24
fping -g ${subnet}
ip="$(arp -n | grep -i ${mac} | cut -c-15)"
sed -i".bak" '/'${name}'/d' /etc/hosts
if [ -z "$ip" ]; then
echo "Device not found!"
else
echo "${ip}\t${name}" >> /etc/hosts
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句