1. 程式人生 > >shell腳本修改主機IP地址

shell腳本修改主機IP地址

ifcfg pin 配置 bash ... sage else 錯誤 del

#!/bin/bash
#Auto modify ip and hostname

IP_CONFIG=‘/etc/sysconfig/network-scripts/ifcfg-eth0‘
HOSTNAME_CONFIG=‘/etc/sysconfig/network‘
HOSTS_CONFIG=‘/etc/hosts‘
#定義一個IP主要內容數組
a=0 #定義變量a為數組的下標,動態使用的時候調用IP_ARRAY[a]
IP_ARRAY=(
IPADDR
NETMASK
GATEWAY
)

#判斷IP是否符合標準規則
function judge_ip(){
#這裏local $1出錯,用2>/dev/null屏蔽掉錯誤,暫未發現影響輸出結果

local $1 2>/dev/null
TMP_TXT=/tmp/iptmp.txt
echo $1 > ${TMP_TXT}
IP_ADDR=grep -Eo ‘([0-9]{1,3}\.){3}[0-9]{1,3}‘ ${TMP_TXT}
#判斷有沒有符合...規則的IP
if [ ! -z "${IP_ADDR}" ];then
local j=0;
#通過循環來檢測每個點之前的數值是否符合要求
for ((i=1;i<=4;i++))
do
local IP_NUM=echo "${IP_ADDR}" |awk -F. "{print $"$i"}"
#判斷IP_NUM是否在0與255之間
if [ "${IP_NUM}" -ge 0 -a "${IP_NUM}" -le 255 ];then
((j++));
else
return 1
fi
done
#通過j的值來確定是否繼續匹配規則,循環四次,若都正確j=4.
if [ "$j" -eq 4 ];then
#確認是否為自己想要輸入的IP地址
rm -rf ${TMP_TXT}
return 0
fi
else
return 1
fi
}

#取得正確的IP值
#通過調用函數judge_ip,變量IP_ADDR的最終值就是正確的
function read_right_IP(){
read -p "請輸入${IP_ARRAY[a]}的值:" IP_ADDRS

IP_ADDRS=""

judge_ip "${IP_ADDRS}";
i=`echo $?`
#循環直到輸入正確的IP為止
until [ "$i" -eq 0 ];do
    echo -e "\033[31m\n你輸入了錯誤的${IP_ARRAY[a]}值:${IP_ADDRS} ====>>>>\033[0m" 
    read -p "重新輸入${IP_ARRAY[a]},請輸入:" IP_ADDRS
    judge_ip "${IP_ADDRS}";
    i=`echo $?`
done

}

#判斷網卡配置文件,存在就備份,不存在則新建一個空白文件
function chang_ip(){
if [ -f ${IP_CONFIG} ];then
cat ${IP_CONFIG}
cp ${IP_CONFIG} ${IP_CONFIG}.bak
echo -e "\033[32m下面將修改IP...\033[0m"
rm -rf ${IP_CONFIG} && touch ${IP_CONFIG};
#把部分基本信息導入到網卡配置文件內
cat >${IP_CONFIG} <<EOF
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
EOF
##########################################
#循環五次,共調用函數五次,分別獲取需要設置的所有數據
for ((a=0;a<=2;a++))
do
read_right_IP;
echo -e "\033[32m\n${IP_ARRAY[a]}=${IP_ADDRS}\033[0m"
#把內容追加到網卡配置文件的最後
echo -e "${IP_ARRAY[a]}=${IP_ADDRS}" >> ${IP_CONFIG}
done
echo -e "\033[32m\n+++++++設置的IP相關信息如下+++++++\033[1m"
cat ${IP_CONFIG};
echo -e "\033[32m\n++++++++++++++++++++++++++++++++++\033[0m"
else
echo -e "\033[31m網卡配置文件:${IP_CONFIG}不存在,請檢查系統是否被破壞...\033[0m"
fi
}

##########################################
chang_ip
if [ "$?" -eq 0 ];then
echo -e "\033[32m修改IP success ...\033[0m"
echo -e "\033[32m刪除70-persistent-cd.rules 文件...\033[0m"
rm -f /etc/udev/rules.d/70-persistent-cd.rules
echo -e "\033[32m重啟service network restart網卡...\033[0m"
service network restart
ping -c 3 10.1.2.254
echo -e "\033[32m history -C ...\033[0m"
history -c
echo -e "\033[32m clean /var/log/messages ...\033[0m"
echo "" >/root/.bash_history
echo "" >/var/log/messages
echo -e "\033[32m delete change_ip.sh \033[0m"
rm -f /root/change_ip.sh

else
echo -e "\033[31m失敗!請檢查IP配置文件...\033[0m"
fi

shell腳本修改主機IP地址