1. 程式人生 > >Linux一鍵設定ip指令碼程式碼 (ip段192.168.1.nnn)

Linux一鍵設定ip指令碼程式碼 (ip段192.168.1.nnn)

本指令碼需要在linux連線工具中完成   

例如  xshell等工具

vi ip.sh    

將下面程式碼複製進去即可

#!/bin/bash # 輸出工具資訊 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo "~~~      歡迎使用自動IP配置工具,請謹慎操作 Author   楊少 ~~~" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" # 先檢查ifconfig命令是否存在 type ifconfig &> /dev/null if [[ $? != 0 ]]; then     echo "檢測到當前作業系統沒有安裝ifconfg命令,本程式將自動安裝,若不同意,請輸入q或Q退出當前程式 。若同意則輸入其他任意內容"     read quitornot     if [[ $quitornot = "q" ]] || [[ $quitornot = "Q" ]]; then         echo "歡迎您的使用,再見"         exit     else         echo "##################正在開啟安裝過程##################"         yum -y install net-tools         echo "##################  命令安裝完成  ##################"     fi fi # 輸出網絡卡列表 echo "本機網絡卡列表如下:" ifconfig | grep '.*: flag.*'|awk -F: '{print$1}' # 提示輸入網絡卡編號 echo "請輸入要配置的網絡卡的編號(預設配置第1個網絡卡,使用預設值請按回車鍵):" # 變數接收網絡卡編號 read NETWORKCARDNUMBER if [[ $NETWORKCARDNUMBER = "" ]]; then     NETWORKCARDNUMBER=1 else     printf "%d" $NETWORKCARDNUMBER &> /dev/null     while [[ $? -ne 0 ]]; do         echo "輸入的網絡卡編號錯誤,請輸入正確的數字!"         read NETWORKCARDNUMBER         if [[ $NETWORKCARDNUMBER = "" ]]; then             NETWORKCARDNUMBER=1             break         else             printf "%d" $NETWORKCARDNUMBER &> /dev/null         fi     done fi echo "將對第$NETWORKCARDNUMBER塊網絡卡進行配置" if [[ $NETWORKCARDNUMBER -eq 0 ]]; then     let NETWORKCARDNUMBER++ fi # 獲取對應網絡卡的網絡卡名 NETWORKCARDNAMEShort=`ifconfig | grep '.*: flag.*'|awk -v line="$NETWORKCARDNUMBER" -v FS=: 'NR==line{pr int $1}'`  # 拼接網絡卡所在路徑,獲取網絡卡全名 NETWORKCARDNAME="/etc/sysconfig/network-scripts/ifcfg-$NETWORKCARDNAMEShort" # 輸出網絡卡絕對路徑 echo $NETWORKCARDNAME

#提示輸入網段 echo "請輸入指定網段(預設為1,使用預設值請按回車鍵)" read NETWORKPART if [[ $NETWORKPART = "" ]]; then     NETWORKPART=1 else     printf "%d" $NETWORKPART &> /dev/null     until [[ $? -eq 0 ]]; do         echo "輸入的網段錯誤,請輸入正確的數字!"         read NETWORKPART         if [[ $NETWORKPART = "" ]]; then             NETWORKPART=1             break         else             printf "%d" $NETWORKPART &> /dev/null         fi     done fi

echo "請輸IP地址的第四段(需>=0且<=254)" read IPPART4 printf "%d" $IPPART4 &> /dev/null until [[ $? -eq 0 ]] && [[ $IPPART4 -ge 0 ]] && [[ $IPPART4 -le 254 ]]; do     echo "輸入的IP地址的第四段錯誤,請輸入正確的數字(需>=0且<=254)!"     read IPPART4     printf "%d" $IPPART4 &> /dev/null done

# 拼接IP地址  IPADDR="192.168.$NETWORKPART.$IPPART4" # 拼接GATEWAY GATEWAY="192.168.$NETWORKPART.1" # 設定NETMASK echo "請輸入自定義NETMASK(預設使用255.255.255.0,使用預設值請按回車鍵):" read NETMASK if [[ $NETMASK = "" ]]; then     NETMASK="255.255.255.0" fi # 拼接DNS1 DNS1="192.168.$NETWORKPART.1"

echo "將修改第$NETWORKCARDNUMBER塊網絡卡,修改的詳細資訊如下:" echo "IPADDR=$IPADDR" echo "NETMASK=$NETMASK" echo "GATEWAY=$GATEWAY" echo "DNS1=$DNS1" echo "並同時將IP獲取方式設定為static,網絡卡隨系統啟動" echo -e "\n是否確認修改,請謹慎操作,此操作不可逆(y or Y)" # echo命令中要想使用\n等類似符號時需要加上- e引數  read input if [[ $input = "y" || $input = "Y" ]]; then     # 修改IP獲取方式為靜態獲取     sed -i "/BOOTPROTO=.*/c BOOTPROTO=static" $NETWORKCARDNAME     # 修改網絡卡隨系統系統     sed -i "/ONBOOT=.*/c ONBOOT=yes" $NETWORKCARDNAME

    # 將IP等相關內容新增到網絡卡檔案的尾部     #sed要想使用變數,只需要將單引號換成雙引號即可,注意在雙引號中使用$(即最後一行)時需要加轉譯符\     sed -i "\$a "IPADDR=$IPADDR"" $NETWORKCARDNAME      sed -i "\$a "NETMASK=$NETMASK"" $NETWORKCARDNAME      sed -i "\$a "GATEWAY=$GATEWAY"" $NETWORKCARDNAME      sed -i "\$a "DNS1=$DNS1"" $NETWORKCARDNAME  else     echo "輸入錯誤,結束" fi

echo "關閉網絡卡並重啟,有可能會斷開連線" ifdown $NETWORKCARDNAME ifup $NETWORKCARDNAME

#提示:上述程式碼已經結束  下面提示幾點  

#提示  :在網絡卡配置的時候可能出現ip段可能不同  

#通過vi編輯命令進行修改  :vi /etc/sysconfig/network-scripts/ifcfg-ens33(這是你的網絡卡名稱,根據自己的來)

修改成自己的ip地址段即可

網絡卡名稱可以修改

切記在修改過網絡卡後一定重啟網絡卡  新建連線即可

命令  service  network restart