需求分析:
得到局域网中正在使用的ip和未使用的ip
将使用的和未使用的ip地址保存到两个不同的文件
得到这些ip地址对应的mac地址
此处使用的校园网作案例
#!/bin/bash# 清空文件,不删除文件内容>used_ip.txt>unused_ip.txt# 此处使用的是校园网的WAN口ip# 使用for循环遍历整个局域网里的ipfor i in {1..254}do# 使用多个子进程执行ping命令,提升执行的效果(ping 10.122.199.$i -c 1 -w 1 &>/dev/nullif (( $? == 0 ))thenecho "10.122.199.$i is used"echo "10.122.199.$i" >>used_ip.txtelseecho "10.122.199.$i" >>unused_ip.txtecho "10.122.199.$i is unused"fi) &done# 让父进程等待子进程,所有的子进程执行完成了,再退出父进程wait# 父进程如果退出,会给所有子进程发送hup挂起信号,收到hup信号的进程会被内核kill掉,为了防止子进程还没执行完成就被kill掉,需要wait# 输出使用的ip地址和总数echo "##############used ip detail################"n=$(cat used_ip.txt|wc -l)echo "有${n}个ip地址在这个局域网里被使用,如下:"cat used_ip.txtecho "#################arp 缓存表###########################"# 得到arp缓存表里的有效的ip对应的mac地址arp -a|awk '{print $2,$4}'|grep -v "incomplete"|tr -d '()'