bash小脚本来检测存活主机,一点小杂记

前期测试

ping一下,从返回结果中我们需要提取其中的ip

先分三步,第一使用grep命令查找符合条件的字符串,第二使用cut指定显示什么区位,第三使用sed取代末位的分号

1
2
3
4
5
6
7
8
root@kali:~# ping -c 1 192.168.197.2 | grep "64 bytes"
64 bytes from 192.168.197.2: icmp_seq=1 ttl=128 time=0.607 ms

root@kali:~# ping -c 1 192.168.197.2 | grep "64 bytes" | cut -d " " -f 4
192.168.197.2:

root@kali:~# ping -c 1 192.168.197.2 | grep "64 bytes" | cut -d " " -f 4 | sed 's/.$//'
192.168.197.2

接下来写一个循环

1
for ip in $(seq 1 254); do ping -c 1 192.168.197.2 | grep "64 bytes" | cut -d " " -f 4 | sed 's/.$//' & done

bash小脚本

开始编写

1
2
3
4
5
6
7
8
9
10
#! /bin/bash
if [ "$1" == "" ]
then
echo "Usage: ./ping.sh [network]"
echo "Example: ./ping.sh 192.168.197"
else
for ip in $(seq 1 254);do
ping -c 1 $1.$ip | grep "64 bytes" | cut -d " " -f 4 | sed 's/.$//' &
done
fi

执行效果

结果出来后直接输入到一个列表,调用nmap之类的工具进行探测,如下