Pages

Adsense

script: massping.sh: mass ping scanner

pretty fast
i know.. some ranges are not valid. More checking needs to be done

#!/bin/bash
#
# ./shping.sh 192.168.0.1-150

function usage() {
echo "usage example: $0 192.168.0.1-100"
exit 1
}

IFS='.'
iprange=($@) # 192 168 0 1-100
IFS=$'\040\t\n' # printf "$IFS"|hexdump -bc
srange=${iprange[3]/%-*/} # 1
erange=${iprange[3]/#*-/} # 100
j=0

# Do some checking
[ "$#" == "1" ] && # only 1 arg
[ ${iprange[*]//[[:digit:]]/} ] && # does it exist?
[ ${#iprange[@]} == 4 ] && # x.x.x.x
[ ${iprange[*]//[[:digit:]]/} == "-" ] ||
usage


# values within 0.0.0.0-255.255.255.255
for i in "${iprange[@]:0:3}" "$srange" "$erange"; do
[ $i ] &&
[ $i -le 255 ] &&
[ $i -ge 0 ] ||
usage
done

# change 192.168.0.10-1 to 192.168.0.1-10
if [ $srange -gt $erange ]; then
trange=$srange
srange=$erange
erange=$trange
fi

# add dots & feed the array
for ((i=$srange; $erange >= i; i++)) do
iplist[$j]="${iprange[@]:0:3}.$i"
iplist=("${iplist[@]// /.}")
(( j++ ))
done

# now feed ping with random ips
for i in ${iplist[@]}; do
r=$(( RANDOM%${#iplist[@]} ))
ping -c1 -s0 ${iplist[$r]}>/dev/null && echo ${iplist[$r]} &
iplist[$r]=""
iplist=(${iplist[@]})
done

exit 0;

1 comments:

tony said...

Hi mate,
quick. simple. useful.
THANKS
tony

Adsense