该脚本主要实现了以下几个功能:
- 检查光盘(设备名
sr0
)是否已经挂载到系统中。 - 如果光盘未挂载,将其挂载到
/mnt
目录。 - 备份
/etc/yum.repos.d
目录下的所有.repo
文件到新建的repo.bak
目录中。 - 创建一个名为
haha.repo
的本地 yum 源配置文件,指向挂载光盘中的BaseOS
和AppStream
目录,并设置gpgcheck
为 0(即不进行 GPG 校验)。 - 清理 yum 缓存并重新生成 yum 缓存,以使其生效新的 yum 源配置。
检查光盘挂载状态
#!/bin/bash
echo "---正在检查光盘是否挂载---"
df | grep "sr0" &> /dev/null
if [ $? -eq 0 ];then
echo "---光盘已挂载---"
else
echo "---光盘未挂载,正在挂载光盘---"
mount /dev/sr0 /mnt >> /dev/null
fi
- 首先,脚本输出提示信息
---正在检查光盘是否挂载---
。 - 然后通过
df | grep "sr0"
命令来检查文件系统信息(df
)中是否包含光盘设备名sr0
的相关记录。将这个命令的输出重定向到/dev/null
(&> /dev/null
),即丢弃其输出内容(标准输出和标准错误输出都丢弃)。 - 通过检查上一个命令的退出状态码(
$?
)来判断光盘是否挂载。如果退出状态码为 0,说明df | grep "sr0"
命令执行成功,也就是找到了光盘已挂载的记录,此时输出---光盘已挂载---
;否则,输出---光盘未挂载,正在挂载光盘---
,并执行mount /dev/cdrom /mnt
命令将光盘设备(/dev/cdrom
)挂载到/mnt
目录,同样将挂载命令的输出重定向到/dev/null
以隐藏可能的挂载提示信息
备份 yum 源配置文件:
cd /etc/yum.repos.d
mkdir repo.bak
mv *.repo repo.bak
echo "---备份已完成---"
- 切换到
/etc/yum.repos.d
目录,这是存放 yum 源配置文件的默认目录。 - 创建一个名为
repo.bak
的新目录,用于存放备份的 yum 源配置文件。 - 使用
mv *.repo repo.bak
命令将该目录下所有以.repo
结尾的文件移动到新建的repo.bak
目录中,完成备份操作,并输出---备份已完成---
创建新的本地 yum 源配置文件:
echo "[base]
name=base
baseurl=file:///mnt/BaseOS
gpgcheck=0
[app]
name=appstream
baseurl=file:///mnt/AppStream
gpgcheck=0" >haha.repo
- 使用
echo
命令输出一段文本内容,这段内容是按照 yum 源配置文件的格式书写的。定义了两个 yum 源仓库:[base]
仓库:名称为base
,其baseurl
指向挂载光盘的/mnt/BaseOS
目录,并且设置gpgcheck
为 0,表示不进行 GPG 校验。[app]
仓库:名称为appstream
,baseurl
指向挂载光盘的/mnt/AppStream
目录,同样gpgcheck
为 0。
- 将上述输出内容重定向到一个新创建的文件
haha.repo
中,从而创建了新的本地 yum 源配置文件。
清理并重新生成 yum 缓存:
yum clean all >> /dev/null
yum makecache
echo "---本地yum源搭建完成---"
cd - >> /dev/null
- 首先执行
yum clean all
命令清理 yum 现有的所有缓存信息,将其输出重定向到/dev/null
以隐藏清理过程中的输出信息。 - 接着执行
yum makecache
命令重新生成 yum 缓存,使其能够识别新创建的本地 yum 源配置。 - 最后输出
---本地yum源搭建完成---
提示信息,表示整个本地 yum 源搭建过程结束,并通过cd -
命令返回之前所在的目录(即切换到执行脚本时所在的原始目录),同样将该命令的输出重定向到/dev/null
#!/bin/bash
echo "---正在检查光盘是否挂载---"
df | grep "sr0" &> /dev/null
if [ $? -eq 0 ];then
echo "---光盘已挂载---"
else
echo "---光盘未挂载,正在挂载光盘---"
mount /dev/sr0 /mnt >> /dev/null
fi
cd /etc/yum.repos.d
mkdir repo.bak
mv *.repo repo.bak
echo "---备份已完成---"
echo "[base]
name=base
baseurl=file:///mnt/BaseOS
gpgcheck=0
[app]
name=appstream
baseurl=file:///mnt/AppStream
gpgcheck=0" >haha.repo
yum clean all >> /dev/null
yum makecache
echo "---本地yum源搭建完成---"
cd - >> /dev/null
测试: