1. 程式人生 > >教你用shell指令碼在Linux上獲取外網IP地址

教你用shell指令碼在Linux上獲取外網IP地址

基於Linux系統的獲取外網IP地址的shell指令碼,指令碼內容如下: getIp.sh

#!/bin/bash
#檢查IP的合法性
check_ipaddr()
{
echo $1|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null;
if [ $? -ne 0 ]
then
#echo "IP地址必須全部為數字"
return 1
fi
ipaddr=$1
a=`echo $ipaddr|awk -F . '{print $1}'` #以"."分隔,取出每個列的值
b=`echo $ipaddr|awk -F . '{print $2}'`
c=`echo $ipaddr|awk -F . '{print $3}'`
d=`echo $ipaddr|awk -F . '{print $4}'`
for num in $a $b $c $d
do
if [ $num -gt 255 ] || [ $num -lt 0 ] #每個數值必須在0-255之間
then
#echo $ipaddr "中,欄位"$num"錯誤"
return 1
fi
done
#echo $ipaddr "地址合法"
return 0
}

host=ns1.dnspod.net
port=16666
ip=`cat</dev/tcp/$host/$port`

check_ipaddr "$ip"

if [ "$?"x = "0"x ]; then
echo "外網IP地址:$ip"
else
echo "獲取IP地址失敗!"
fi

使用命令 chmod +x getIp.sh 給指令碼授權後即可執行輸出結果。