說明:我們公司服務器環境用的是vmware虛擬化架構,每次將模板克隆為虛擬機后,都需要手動需修改主機名、IP地址、網卡名稱、用戶名密碼修改(滿足復雜度要求)以及時間同步等,故抽閑時間寫了一個自動修改的腳本,此腳本適用于centos6和redhat6版本,要想其他版本也能跑,可自行做個簡單的修改即可(基本都大同小異)
腳本內容:
#!/bin/bash
########################################
####ALOM ##########################
####by ALOM 20201206###########
##########################
/usr/sbin/ntpdate 10.100.22.166 ###ntp時間同步服務器IP地址
/bin/date
echo "++++++時間校驗成功+++++++"
. /etc/init.d/functions
###功能:1,修改網卡名稱為eth0## 2,IP地址##3,注釋mac緩存##4,修改主機名##5,修改密碼##
Hostname=`awk -F='$1~/^HOSTNAME$/{print $2}' /etc/sysconfig/network`
Ethname=`find /etc/sysconfig/network-scripts -type f -name "ifcfg-eth*"`
Ethnames=`find /etc/sysconfig/network-scripts -type f -name "ifcfg-eth*"|awk -F"[/-]" '{print $NF}'`
Ethnamed="/etc/sysconfig/network-scripts/ifcfg-eth0"
Ipeth0=`awk -F='$1~/^IPADDR$/{print $2}' ${Ethname}`
change_eth(){
if [ -f $Ethnamed ]
then
echo "網卡eth0 already esist"
else
mv ${Ethname} ${Ethnamed}
sed -i "s#${Ethnames}#eth0#g" ${Ethnamed} &&\
action "網卡名稱修改為eth0" /bin/true
fi
}
change_ip(){
read -p "請輸入你需要修改的網卡IP,例如:10.0.0.xx.請輸入:" a
ping -w 1 -c 1 $a
if [ $? -eq 0 ]
then
echo "$a is already use"
else
sed -i "s#${Ipeth0}#${a}#g" /etc/sysconfig/network-scripts/ifcfg-eth0
if [ $? -eq 0 ]
then action "網卡IP${a}配置完成" /bin/true
else echo -e "\033[42;37mERROR:網卡IP${a}配置失敗請檢查\033[0m"
exit 1
fi
fi
}
change_hostname(){
read -p "請輸入你要配置的主機名,例如:web01.請輸入:" c
hostname $c && action "命令行修改主機名$c" /bin/true
sed -i "s#${Hostname}#${c}#g" /etc/sysconfig/network
if [ $? -eq 0 ]
then action "主機名${c}配置完成" /bin/true
else echo -e "\033[42;37mERROR:${c}配置失敗請檢查腳本\033[0m"
exit 1
fi
}
change_maclog(){
sed -i 's#^SUBSYSTEM#\#SUBSYTEM#g' /etc/udev/rules.d/70-persistent-net.rules
action "/etc/udev/rules.d/70-persistent-net.rules 已經全部注釋" /bin/true
}
change_password(){
pass=`uuidgen|cut -c 29-`
echo "$pass"|passwd --stdin root &&\
echo -e "\033[41;37m $pass 牢記 \033[0m"
#echo "$pass" >>/tmp/pass.txt
#cat /tmp/pass.txt
}
weblogic_password(){
passweb=`uuidgen|cut -c 29-`
echo "$passweb"|passwd --stdin weblogic &&\
echo -e "\033[41;37m weblogic/$passweb 牢記 \033[0m"
#echo "weblogic/$passweb" >>/tmp/pass.txt
#cat /tmp/pass.txt
}
change_host(){
echo "${a} ${c}" >>/etc/hosts
}
main(){
change_eth
change_ip
change_hostname
change_maclog
change_password
weblogic_password
change_host
}
main
while true
do
cat<<EOF
請在您10秒內做出選擇選擇菜單如下:
1.重啟網卡
2.稍后重啟,并退出腳本
3.重啟系統reboot
EOF
echo -e "\033[41;37m請牢記密碼,再進行選擇\033[0m"
read -p "竭誠為您服務,請輸入你的選擇:" d
case "$d" in
1)
echo -e "\033[41;37m您已經選擇重啟網卡,遠程連接會斷開,請在遠程管理界面修改主機IP和密碼之后重連,歡迎下次使用\033[0m"
/etc/init.d/network restart
exit
;;
2)
echo -e "\033[41;37m您已經選擇稍后重啟網卡,重啟網卡命令'/etc/init.d/network restart',歡迎下次使用\033[0m"
exit 2
;;
3)
echo -e "\033[41;37m您已經選擇稍后重啟系統reboot,歡迎下次使用\033[0m"
reboot
;;
*)
echo -e "\033[41;37m您的輸入有誤,請輸入\n1:重啟網卡\n2:稍后重啟網卡并退出腳本\n請在5秒后重新輸入\033[0m"
;;
esac
sleep 5
done
效果展示:
提示:如果有想用此腳本的朋友需要注意從windows上復制粘貼到Linux系統下可能會有字符集亂碼的情況,可使用cat -A +腳本|more 打印出亂碼進行調整哦。
使用中如有問題可隨時在下發評論處留言哦[中國贊] 關注我每天分享更多實用的運維知識哦[送心]
CFan曾分享過如何將Wubi安裝好的Ubuntu系統遷移到Windows XP和Windows 7系統下的方法,但這一方法并不適用于Windows 10,我們需要另辟蹊徑,借助grub-2.02-for-windows來實現Windows 10下的遷移,這個方法的一大好處就是,只要讀者的Windows 10電腦硬盤足夠大,就可以遷移任意多個Ubuntu系統,并且無需讀者自己創建每個Ubuntu系統的引導文件Wubildr和Wubildr.mbr,以及無需修改每個Ubuntu系統內部的grub.cfg配置文件。
圖1 用7-zip打開的Ubuntu映像文件root.disk
首先準備Wubi安裝好的Ubuntu系統,拷貝復制“X:\ubuntu”文件夾到Windows 10電腦下的一個NTFS分區,用7-zip打開Ubuntu系統映像文件root.disk(圖1),導出其中的“/boot/grub/grub.cfg”文件到一個文件夾中,然后找到grub.cfg配置文件中的Ubuntu啟動菜單項(圖2)。
圖2 Ubuntu內部grub.cfg配置文件中的啟動菜單項關鍵內容
下載并解壓grub-2.02-for-windows.zip,以系統管理員身份打開command窗口,進入grub-2.02-for-windows文件夾,執行命令“grub-install.exe boot-directory=c: --target=i386-pc \.\PHYSICALDRIVE0”(圖3)。此處三個參數分別為:
“boot-directory=c:”表示grub安裝于C盤
“--target=i386-pc”表示引導目標平臺是i386-pc(也是默認目標平臺,還有其他平臺模式,比如i386-efi、x86_64-efi等等)
“\.\PHYSICALDRIVE0”表示電腦硬盤1的設備號,此設備號由windows命令行中執行“wmic diskdrive list brief”獲得,硬盤1是“\.\PHYSICALDRIVE0”,硬盤2是“\.\PHYSICALDRIVE1”,其他類推。
以上安裝完成后,此電腦啟動管理開始由grub2負責。
圖3 Windows 10管理員權限命令行中安裝grub-2.02-for-windiws
現在我們來編輯grub-2.02-for-windiws配置文件grub.cfg。使用Notepad++或者其他文本編輯工具在C盤grub文件夾下創建編輯grub.cfg文件,增加Windows 10和Ubuntu啟動菜單項。Windows 10啟動菜單項內容簡單,設置C盤為根文件系統(hd0是硬盤1,msdos1是主分區1,主分區2是msdos2,擴展分區1是msdos5,擴展分區2是 msdos6,其他類推),裝載Windows 10系統的bootmgr文件,執行boot啟動Windows 10。打開前面從root.disk中導出的Ubuntu系統內部grub.cfg文件,找到linux內核文件名和內存盤文件名(比如“Linux 3.13.0-62-lowlatency”和“initrd.img-3.13.0-62-lowlatency”圖2紅色標示部分),參考圖2中Ubuntu啟動菜單項,拷貝其中部分代碼到正編輯的grub.cfg文件中,增加Ubuntu啟動菜單項。grub.cfg文件完整內容如下表所示(表1)。
表1 grub-2.02-for-windiws配置文件grub.cfg內容(見附圖)
表1-grub.cfg文件內容截圖
重新啟動電腦,進入Windows 10(圖4、圖5)。
圖4 grub-2.02-for-windiws啟動管理界面
圖5 Windows 10系統
啟動Ubuntu。遷移的電腦硬盤分區與原安裝電腦根本不同,引導Ubuntu會出現uuid錯誤并進入initramfs系統。不過我們可以在grub引導界面鍵入“c”鍵進入grub的命令行模式,執行三次ls命令(圖6),得到分區號和uuid信息及Ubuntu系統映像文件主文件夾名并記住(圖6黃色標示的部分),鍵入“Esc”鍵回到grub引導界面啟動Windows 10,在Windows 10系統中編輯前面創建的grub.cfg配置文件,修改分區號(表1第13行)、UUID(表1第16行)和root.disk文件全路徑名稱(表1第14和第16行),再次啟動電腦進入Ubuntu(圖7)。
圖6 grub-2.02-for-windiws命令行模式執行ls命令結果
圖7 Ubuntu系統
最后我們說說多個Ubuntu遷移到Windows 10的問題。對于多個Ubuntu系統遷移,只需將“X:\ubuntu”文件夾拷貝完成后(X:\ubuntu1、X:\ubuntu2……),編輯修改grub.cfg文件,增加啟動菜單項即可(圖8)。所有啟動菜單項格式內容一樣,區別的是啟動菜單項名稱(表1第10行),分區號(表1第13行)、UUID(表1第16行)、root.disk文件全路徑名(表1第14和第16行)、內核文件名和內存盤文件名(表1第16和第17行)。
圖8 增加多個Ubuntu啟動菜單項
對于中文名稱啟動菜單項,grub-2.02-for-windows是支持的,編輯grub.cfg配置文件時在啟動菜單項名稱前面(表1中第3行與第4行之間)插入相應內容即可(表2)。
表2-支持中文菜單顯示截圖