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