下面是关于主机发现的一些脚本,包括bash和Python的,在对一个网段进行扫描时是很方便的,注意一点的就是在运行之前先要赋予相应的权限~
arp1.sh:
#!/bin/bash
if ["$#" -ne 1]
then
echo "Usage : ./arping1.sh [Interface]"
exit
fi
interface=$1
prefix=$(ifconfig $interface | grep 'inet '| cut -d 't' -f 2 | cut -d ' ' -f 2 | cut -d '.' -f 1-3)
for addr in $(seq 1 254)
do
arping -c 1 $prefix.$addr | grep "bytes from" | cut -d " " -f 5 | cut -d "(" -f 2 | cut -d ")" -f 1
done
代码中的if语句中$#代表输入的参数,-ne表示不等于,即该语句的意思是当输入的参数个数不为1时,则输出提示正确的输入方式;后面将输入的接口值赋值给interface变量;prefix变量为前缀,在其中先进行对interface变量进行ifconfig命令然后通过管道和cut命令来将整个信息筛选到只剩前缀,如10.10.10;接着是for循环语句,addr变量从1到254逐渐遍历,里面执行arping命令,其中地址为prefix作为前缀、addr作为后缀来实现遍历整个网段,再通过管道符和cut命令将grep命令符合的IP(这里只有返回了“bytes from”的才是存活的地址)筛选出来。
运行结果:
apr2.sh:
#!/bin/bash
if ["$#" -ne 1]
then
echo "Usage : ./arping2.sh [filename]"
exit
fi
file=$1
for addr in $(cat $file)
do
arping -c 1 $addr | grep "bytes from" | cut -d " " -f 5 | cut -d "(" -f 2 | cut -d ")" -f 1
done
和上面的类似,只是将需要扫描的IP都写在一个文件中,然后对这个文件进行扫描即可。
运行结果: