今天呢,將之前的腳本慢慢整理一下,原因我也不多說了,慢慢將之前拉下的腳本都慢慢寫一下,好好練習下。廢話不多說,詳見下面的源碼。
這個腳本不是太難,不過想寫好不容易,我搞了差不多半天,測試了好幾次,然後確認沒有問題後,將其發上來,供大家參考,源碼在附件上,大家可以下下來參考下。
#!/bin/bash
main () { #首先這個main函數,沒什麼可說的,包含其他函數,看着比較順,僅此
clean #而已,當然,你也可以將其放在後面,不過需要注意的是,最後調用
ready #的時候,一定注意將main放在後面,也就是說的,先聲明在引用,如
mountiso #本腳本中,我將最後的調用放在了最後面。
copy
repo
config
}
YUMDIR=/var/yum #定義本地的rpm包得存放位置,可以自己做調整
SOURCEISO=/dev/cdrom #光盤鏡像的目錄
DESTISO=/media/cdrom #光盤鏡像掛載的目標路徑
clean() { #clean函數很簡單,主要就是創建掛載點加上簡單的判斷
if [ -e $DESTISO ];then
sleep 1
else
echo "$DESTISO is't exit,create it now"
mkdir ${DESTISO}
fi
}
ready() { #ready函數主要是確保此目錄沒有被掛載其他文件,如遠程
if cat /etc/mtab |grep "${DESTISO}" &> /dev/null;then #掛載NFS等等
fuser -km ${DESTISO}
umount ${SOURCEISO} #或者是光盤已經掛載到其他位置
fi
if [ -e $YUMDIR ];then #創建本地rpm存放目錄,加上簡單判斷而已
sleep 1
else
echo "$YUMDIR isn't exit,creat it now"
mkdir $YUMDIR
fi
}
mountiso(){ #這個就是簡單的判斷,看看能不能掛載成功。
mount ${SOURCEISO} $DESTISO &> /dev/null #不成功,則判斷爲沒有插入光盤
if [ $? -ne 0 ];then
echo "Please mount the cdrom first,and then try this scripts again"
echo "clean the directory what you just created...."
rm -rf $YUMDIR
exit
fi
}
copy(){ #copy函數很簡單就是將相關的rpm包拷貝到本地rpm存放位置
echo "--------------------------------------------------"
echo "now,copy the iso,Please wait for a few time......."
echo "--------------------------------------------------"
sleep 2
cp -r $DESTISO/* $YUMDIR
echo "copy ok,umount the ISO: "
umount $DESTISO
}
repo(){ #檢查當前是否已經安裝createrepo,和創建yum_repository的
rpm -ql createrepo &> /dev/null #xml-rpm-metadata
if [ $? -ne 0 ];then
cd /var/yum/Server
rpm -ivh createrepo*.rpm &> /dev/null
fi
echo "Now,create config file,Please wait some time....."
createrepo -g /var/yum/Server/repodata/comps-rhel5-server-core.xml /var/yum/Server/ &> /dev/null
createrepo -g /var/yum/VT/repodata/comps-rhel5-vt.xml /var/yum/VT/ &> /dev/null
createrepo -g /var/yum/Cluster/repodata/comps-rhel5-cluster.xml /var/yum/Cluster/ &> /dev/null
createrepo -g /var/yum/ClusterStorage/repodata/comps-rhel5-cluster-st.xml /var/yum/ClusterStorage/ &> /dev/null
}
config(){ #配置yum的配置文件
touch /etc/yum.repos.d/local.repo
cat > /etc/yum.repos.d/local.repo << EOF
[base]
name=Server
baseurl=file://${YUMDIR}/Server
gpgcheck=0
[VT]
name=VT
baseurl=file://${YUMDIR}/VT
gpgcheck=0
[Cluster]
name=Cluster
baseurl=file://${YUMDIR}/Cluster
gpgcheck=0
[ClusterStorage]
name=ClusterStorage
baseurl=file://${YUMDIR}/ClusterStorage
gpgcheck=0
EOF
echo " the local yum is already build"
}
main
sleep 2
echo "now,test the local yum is ok ?" #進行簡單的測試清理yum緩存和重建
yum clean all &> /dev/null &&yum grouplist