源代码下载地址: git clone https://github.com/HappyFreeAngel/discover-device-ip.git
在日常调试特种设备如IOT设备,打印机,或树莓派设备,特别是没有屏幕,键盘鼠标的情况下,只是知道这个设备可以获取到一个IP地址,可能是dhcp 获取或已经设置了静态ip 地址, 同时知道这个设备的用户密码等,但是没有显示器,键盘鼠标,或者安装显示器键盘等外设比较麻烦的情况下,
如何获取这个设备的IP,进而进行控制呢?
- 保存下列代码为 netscan.sh 并设置执行权限 chmod +x netscan.sh
#!/usr/bin/env bash
domain=`echo $1`
ip_start=`echo $2| cut -d "," -f 1`
ip_end=`echo $2| cut -d "," -f2`
ip_crt=`echo $ip_start`
function segScan(){
ping -c 1 $1.$2 > /dev/null && echo "$2 is alive"&
rst=`echo $?`
return $rst
}
while [ $ip_crt -ne $ip_end ]
do
{
segScan $domain $ip_crt
rst=`echo $?`
ip_crt=$((ip_crt+1))
}
done
wait
- 接上你的设备 如树莓派,或其他能联网的设备
- netscan.sh 192.168.2 1,255 > /tmp/1.txt ; sort /tmp/1.txt >/tmp/withDeviceIP.txt
- 快速断开你的设备(断网 或断电 都可以)
- 执行netscan.sh 192.168.2 1,255 > /tmp/2.txt; sort /tmp/2.txt >/tmp/withoutDeviceIP.txt.txt
- diff /tmp/withDeviceIP.txt.txt /tmp/withoutDeviceIP.txt.txt
- 即可知道刚连接上的IP地址是多少。
上面之所以要用sort 排序是因为netscan 是异步并发执行的,结果可靠但是顺序每次执行都不一样,
所以必须要sort 排序之后结果才会准确.
这方法可以用于快速确认新连接设备的IP地址。
如果您不确定是否真的是这个IP地址,可以 ping 刚才获取的新的IP 192.168.2.130,
然后把你的设备网线/WI-FI/或断电,看看是不是ping 不通了。
如果是肯定是这个IP没有错。
一行代码执行方法:
ipinfo=“192.168.1 2,254”;git clone https://github.com/HappyFreeAngel/discover-device-ip.git; cd discover-device-ip; ./netscan.sh ${ipinfo} >/tmp/1.txt; echo “请断开设备 然后按回车”; read user_input; netscan.sh ${ipinfo} >/tmp/2.txt; sort /tmp/1.txt >/tmp/11.txt; sort /tmp/2.txt >/tmp/12.txt;diff /tmp/11.txt /tmp/12.txt;