今天呢,将之前的脚本慢慢整理一下,原因我也不多说了,慢慢将之前拉下的脚本都慢慢写一下,好好练习下。废话不多说,详见下面的源码。

这个脚本不是太难,不过想写好不容易,我搞了差不多半天,测试了好几次,然后确认没有问题后,将其发上来,供大家参考,源码在附件上,大家可以下下来参考下。

 

#!/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

至此,脚本已经完成了,你可以自己测试下,当然了,可能有些地方写的有点问题,欢迎指出,共同进步,脚本源码在附件中,大家可以下载。