版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liudglink/article/details/84787664
#!/usr/bin/env bash
#=================================================================
# CPSTR: Copyright (c) 2018 By Abodu, All Rights Reserved.
# FNAME: getAvailableIPAddr.sh
# AUTHR: abodu,[email protected]
# CREAT: 2018-12-04 14:06:44
# ENCOD: UTF-8 Without BOM
# VERNO: 0.0.1
# LUPTS: 2018-12-04 14:06:44
#=================================================================
getAvailableIPAddr() {
local gfunc=$FUNCNAME
function gai_usage() {
echo
echo "$gfunc - 获取指定的网卡所在网络中正在使用的ip及可配置的ip"
echo
echo "Usage: $gfunc {[-h] | <-n nicName> }"
echo
}
function gai_ca() {
if [ "X$1" == "X" ]; then
gai_usage
return 1
fi
case $1 in
-[nN] | --nic-name)
shift
nic=$1
;;
-[hH] | --help)
gai_usage
return 1
;;
*)
[ "X${1:0:1}" != "X-" ] && nic=$1
;;
esac
return 0
}
function display_ipaddr() {
local ip_can_use='ip_can_use.txt'
local ip_using='ip_using_now.txt'
>$ip_using
>${ip_can_use}
echo 'IP Using Now:'
for x in ${1}.{1..254}; do
ping -c 3 $x &>/dev/null
if [ $? -ne 0 ]; then
echo $x >>$ip_can_use
else
echo $x | tee -a $ip_using
fi
done
echo "IP Available:"
cat $ip_can_use
}
local nic=
gai_ca $@
[ $? -ne 0 ] && return
if [ "X$nic" == "X" ]; then
echo "you must provides a nic-name"
echo
gai_usage
return
fi
case $nic in
[38])
nic=enp${nic}s0
;;
[86][01])
nic=enp${nic:0:1}s0f${nic:1:1}
;;
esac
[ "X$nic" == "Xlo" ] && return
local cur_ipaddr=$(ip -4 addr show $nic | sed -n '/inet /p' | awk '{print $2}')
[ "X$cur_ipaddr" == "X" ] && return
display_ipaddr ${cur_ipaddr%.*}
}
getAvailableIPAddr $@