標籤:
[[email protected] shell]# cat mod_ip_hostname.sh #!/bin/bash#Auto modify ip and hostname#by colin on 2015-05-07IP_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=(IPADDRNATMASKGATEWAYdns1dns2)#判斷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地址 read -n 1 -p "輸入${IP_ARRAY[a]}的值是${IP_ADDR},確認輸入:Y|y;重新輸入:R|r:" OK case ${OK} in Y|y) rm -rf ${TMP_TXT} ; return 0;; R|r) return 1;; *) return 1;; esac else return 1 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 cp ${IP_CONFIG} ${IP_CONFIG}.bak #網卡的MAC地址 HW_ADDR=`grep ‘HWADDR‘ ${IP_CONFIG}` #IP配置狀態 DHCP_STATUS=`grep ‘BOOTPROTO‘ ${IP_CONFIG} |awk -F= ‘{print toupper($2)}‘` #如果BOOTPROTO的值是DHCP,就繼續設定IP,否則退出呢 if [ "${DHCP_STATUS}" = ‘DHCP‘ ];then echo -e "\033[32mIP擷取方式為:${DHCP_STATUS},下面將修改為靜態IP...\033[0m" rm -rf ${IP_CONFIG} && touch ${IP_CONFIG};#把部分基本資料匯入到網卡設定檔內cat >${IP_CONFIG} <<EOFDEVICE=eth0HWADDRTYPE=EthernetONBOOT=yesBOOTPROTO=staticEOF########################################## #把原來MAC地址寫進去 sed -i "/HWADDR/s/HWADDR/${HW_ADDR}/g" ${IP_CONFIG} #迴圈五次,共調用函數五次,分別擷取需要設定的所有資料 for ((a=0;a<=4;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[32m系統IP已經是:${DHCP_STATUS},無須修改...\033[0m" fi else echo -e "\033[31m網卡設定檔:${IP_CONFIG}不存在,請檢查系統是否被破壞...\033[0m" fi}#指令碼選擇菜單menu=( chang_ip_config chang_hostname_config chang_hosts_confg exit_menu help_menu)PS3="Please select menu will running to do (Need help,Please input: 5 ): "select i in ${menu[@]}do case $i in ${menu[0]}) chang_ip if [ "$?" -eq 0 ];then echo -e "\033[32m修改IP為靜態擷取成功...\033[0m" else echo -e "\033[31m請檢查IP是否為靜態擷取...\033[0m" fi ;; ${menu[1]}) exit ;; ${menu[2]}) exit ;; ${menu[3]}) exit ;; ${menu[4]}) echo -e "\033[32m=========協助菜單內容如下==========\033[0m" for ((i=0;i<"${#menu[@]}";i++)) do echo -e "\033[33m `expr $i + 1`) ${menu[i]} \033[0m" done ;; esacdone
更多內容請關註:shell-scripts指令碼修改IP地址
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />http://www.jfedu.net/forum.php?mod=viewthread&tid=1776&fromuid=100
(出處: Linux營運培訓-京峰Linux教育官網)
指令碼運行示:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6C/92/wKioL1VMbDXhVPB2AAHTI9UA_Lc233.jpg" title="QQ20150508152904.jpg" alt="wKioL1VMbDXhVPB2AAHTI9UA_Lc233.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6C/91/wKioL1VMajvShnxRAANm2zLLeq0615.jpg" style="float:none;" title="QQ20150508153656.jpg" alt="wKioL1VMajvShnxRAANm2zLLeq0615.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6C/96/wKiom1VMaMmAIOExAANMwSoxf-Q630.jpg" style="float:none;" title="QQ20150508153715.jpg" alt="wKiom1VMaMmAIOExAANMwSoxf-Q630.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6C/91/wKioL1VMaj6Ddl_bAADivmuDq_8316.jpg" style="float:none;" title="QQ20150508153750.jpg" alt="wKioL1VMaj6Ddl_bAADivmuDq_8316.jpg" />
本文出自 “上山路十八彎” 部落格,請務必保留此出處http://kongzi68.blog.51cto.com/1432619/1649605
bash-shell-scripts進階指令碼配置IP地址