代码使用方法,示例:
$ ./ping_ip_addresses.sh 127.0.1.1 127.0.1.5
127.0.1.1 - SUCCESS
127.0.1.2 - SUCCESS
127.0.1.3 - SUCCESS
127.0.1.4 - SUCCESS
127.0.1.5 - SUCCESS
只支持IPv4,对于一般用途够用了。源代码:
#!/bin/bash
function ping_ip_address() {
local IP_ADDRESS=$1
ping -c 1 "$IP_ADDRESS" >/dev/null
local RESULT=$?
if [ 0 -eq $RESULT ]
then
echo "$IP_ADDRESS - SUCCESS"
else
echo "$IP_ADDRESS - FAIL" >&2
fi
return $RESULT
}
function ip_addresses_exec() {
local IP_ADDRESSES_START=$1
local IP_ADDRESSES_END=$2
local EXEC_COMMAND=$3
local END_IP1=`echo "$IP_ADDRESSES_END" | cut -d '.' -f 1`
local END_IP2=`echo "$IP_ADDRESSES_END" | cut -d '.' -f 2`
local END_IP3=`echo "$IP_ADDRESSES_END" | cut -d '.' -f 3`
local END_IP4=`echo "$IP_ADDRESSES_END" | cut -d '.' -f 4`
local IP1=`echo "$IP_ADDRESSES_START" | cut -d '.' -f 1`
local IP2=`echo "$IP_ADDRESSES_START" | cut -d '.' -f 2`
local IP3=`echo "$IP_ADDRESSES_START" | cut -d '.' -f 3`
local IP4=`echo "$IP_ADDRESSES_START" | cut -d '.' -f 4`
while true
do
"$EXEC_COMMAND" "${IP1}.${IP2}.${IP3}.${IP4}"
if [ "$END_IP1" -eq "$IP1" ] && [ "$END_IP2" -eq "$IP2" ] && [ "$END_IP3" -eq "$IP3" ] && [ "$END_IP4" -eq "$IP4" ]
then
break
fi
IP4=$(($IP4+1))
if [ "255" -eq "$IP4" ]
then
IP4=1
IP3=$(($IP3+1))
fi
if [ "255" -eq "$IP3" ]
then
IP3=1
IP2=$(($IP2+1))
fi
if [ "255" -eq "$IP2" ]
then
IP2=1
IP1=$(($IP1+1))
fi
done
}
ip_addresses_exec "$1" "$2" "ping_ip_address"
|