【RedHat】创建第一个Shell脚本——生成本地yum源和国内阿里云源

Shell脚本是一种用来批量执行一系列命令的脚本文件,毋庸置疑就是为了方便偷懒,执行一个Shell脚本就能完成所有指令。

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      #执行,无输出结果
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信