Shell脚本是一种用来批量执行一系列命令的脚本文件,毋庸置疑就是为了方便偷懒,执行一个Shell脚本就能完成所有指令。
- 根据【RedHat】搭建本地yum仓库文章写了一个搭建yum仓库和国内镜像源的脚本
YUM脚本
要想写一个脚本,需要做以下三件事:
- 写一个脚本
- 允许Shell执行它
- 把它放到Shell能找到的地方
写一个脚本-->需要文本编辑器才能写-->可以用系统自带的vi或者vim编辑器,或者自行选择使用
前期:加载CD/DVD ISO文件
点击右下角光盘标识,有如下显示就表示连接了ISO文件

点击设置,则可以显示正在使用rhel9的ISO文件

(一)搭建本地yum仓库的Shell脚本(简易版)
- 这里将repo.sh 文件创建在root目录下,记住脚本的路径为/root。
javascript
vim repo.sh #采用vim文本编辑器创建并编辑repo.sh文件
javascript
##############################################################################
#DESCRIPTION:建立本地YUM仓库
#NOTES:
#1、新建目录
#2、配置本地YUM源 ISO文件(挂载)
#3、配置本地YUM源文件local.repo
#4、清除历史YUM源缓存
#5、建立新的YUM源缓存
#6、测试本地YUM源
#AUTHOR:Ley
#CREATED: 2024/3/23
###############################################################################
#!/bin/bash
mkdir -p /media/rhel9
umount -f /dev/sr0
mount /dev/sr0 /media/rhel9
df -h
rm -rf /etc/yum.repos.d/*.repo
echo '[rhel_BaseOS]
name=rhel_BaseOS
baseurl=file:///media/rhel9/BaseOS
gpgcheck=0
[rhel_Appstream]
name=rhel_Appstream
baseurl=file:///media/rhel9/AppStream
gpgcheck=0' > /etc/yum.repos.d/rhel9.repo
cat /etc/yum.repos.d/rhel9.repo
systemctl daemon-reload
yum clean all
yum makecache
yum install httpd
echo '/dev/sr0 /media/rhel9 iso9660 defaults 0 0' >> /etc/fstab
javascript
##############################################################################
#脚本是写给人看的,所以我们在写脚本时一般都需要注释,在脚本的开头,就需简单介绍脚本的作用和功能,让别人能轻松看懂。
#每个公司企业有不同的格式,这里只是一个举例格式,也可以按照自己的方式写注释
#DESCRIPTION:建立本地YUM仓库
#NOTES:
#1、新建目录
#2、配置本地YUM源 ISO文件(挂载)
#3、配置本地YUM源文件local.repo
#4、清除历史YUM源缓存
#5、建立新的YUM源缓存
#6、测试本地YUM源
#AUTHOR:Ley
#CREATED: 2024/3/23
###############################################################################
#脚本解释器
#!/bin/bash
#脚本内容:
#创建挂载目录
mkdir -p /media/rhel9
#取消/dev/sr0的挂载
umount -f /dev/sr0
#将/dev/sr0挂载至/media/rhel9目录
mount /dev/sr0 /media/rhel9
#查看挂载结果是否挂载成功
df -h
#删除/etc/yum.repos.d目录下的所有.repo文件
rm -rf /etc/yum.repos.d/*.repo
#使用echo命令创建rhel9.repo文件并将''内容写入/etc/yum.repos.d/rhel9.repo文件中
echo '[rhel_BaseOS]
name=rhel_BaseOS
baseurl=file:///media/rhel9/BaseOS
gpgcheck=0
[rhel_Appstream]
name=rhel_Appstream
baseurl=file:///media/rhel9/AppStream
gpgcheck=0' > /etc/yum.repos.d/rhel9.repo
#查看rhel9.repo文件内容
cat /etc/yum.repos.d/rhel9.repo
#更新被修改的配置文件信息
systemctl daemon-reload
#清除历史YUM源缓存
yum clean all
#检查yum源文件信息是否有误,并建立新的YUM源缓存
yum makecache
#测试本地yum源
yum install httpd
#修改/etc/fstab文件,设置开机自动挂载
echo '/dev/sr0 /media/rhel9 iso9660 defaults 0 0' >> /etc/fstab
编辑完repo.sh 文件后,增加repo.sh脚本的可执行权限,并将其执行
javascript
[root@localhost ~]# chmod +x repo.sh
[root@localhost ~]# ./repo.sh
执行repo.sh脚本的输出结果如下:
# /dev/sr0设备没有被挂载
umount: /dev/sr0: not mounted.
#成功将/dev/sr0挂载到/media/rhel9目录
mount: /media/rhel9: WARNING: source write-protected, mounted read-only.
#df -h 显示挂载信息
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 726M 9.7M 716M 2% /run
/dev/nvme0n1p3 15G 4.9G 11G 33% /
/dev/nvme0n1p1 495M 349M 146M 71% /boot
tmpfs 363M 96K 363M 1% /run/user/1000
/dev/sr0 8.0G 8.0G 0 100% /media/rhel9 #从这里可以看到挂载成功
#显示配置好的本地YUM源文件内容
[rhel_BaseOS]
name=rhel_BaseOS
baseurl=file:///media/rhel9/BaseOS
gpgcheck=0
[rhel_Appstream]
name=rhel_Appstream
baseurl=file:///media/rhel9/AppStream
gpgcheck=0
#清除历史YUM源缓存
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:00:03 ago on Sat 23 Mar 2024 05:39:05 PM CST.
#检查yum源文件信息是否有误,并建立新的YUM源缓存
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
rhel_BaseOS 2.7 MB/s | 2.7 kB 00:00
rhel_Appstream 2.7 MB/s | 2.8 kB 00:00
Last metadata expiration check: 0:00:01 ago on Sat 23 Mar 2024 05:39:05 PM CST.
Metadata cache created.
#测试yum仓库,下载httpd,测试成功,httpd已下载
Package httpd-2.4.57-8.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
(二)配置国内yum源的shell脚本
在root目录下新建一个alirepo.sh脚本
javascript
##############################################################################
#DESCRIPTION:配置国内阿里云源
#NOTES:
#1、配置aliyun_yum.repo文件
#2、建立新的YUM源缓存
#6、测试国内镜像源YUM源
#AUTHOR:Ley
#CREATED: 2024/3/24
###############################################################################
#!/bin/bash
echo '[ali_baseos]
name=ali_baseos
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
gpgcheck=0
[ali_appstream]
name=ali_appstream
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
gpgcheck=0' > /etc/yum.repos.d/aliyun_yum.repo
yum makecache 1>/dev/null #将输出结果丢进垃圾桶
yum -y update 1>/dev/null
~
javascript
# chmod +x alirepo.sh #增加可执行权限
# ./alirepo.sh #执行,无输出结果