今天呢,将之前的脚本慢慢整理一下,原因我也不多说了,慢慢将之前拉下的脚本都慢慢写一下,好好练习下。废话不多说,详见下面的源码。
这个脚本不是太难,不过想写好不容易,我搞了差不多半天,测试了好几次,然后确认没有问题后,将其发上来,供大家参考,源码在附件上,大家可以下下来参考下。
#!/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