bash-shell-scripts進階指令碼配置IP地址

來源:互聯網
上載者:User

標籤:

[[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地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.