【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      #执行,无输出结果
相关推荐
Linging_245 分钟前
Spring AI Alibaba集成阿里云百炼大模型应用
人工智能·spring·阿里云
非自律懒癌患者9 分钟前
ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案
linux·tcp/ip·ubuntu
Xam_d_LM9 分钟前
【Linux】如何清除 Ubuntu 留下的 EFI 分区,Windows 磁盘管理器右键删除卷是灰色
linux·运维·windows·ubuntu·重装系统·磁盘管理器
黄暄30 分钟前
Linux项目部署全攻略:从环境搭建到前后端部署实战
java·linux·运维·服务器·前端·后端·持续部署
独行soc1 小时前
2025年渗透测试面试题总结-安恒[实习]安全服务工程师(题目+回答)
linux·数据库·安全·web安全·面试·职场和发展·渗透测试
L汐1 小时前
01 CentOS根分区满了扩容
linux·运维·centos
小峰编程2 小时前
Python函数——万字详解
linux·运维·服务器·开发语言·前端·网络·python
大筒木老辈子2 小时前
Linux笔记---内核态与用户态
linux·运维·笔记
五花肉村长3 小时前
Linux-进程信号
linux·运维·服务器·开发语言·网络·c++
FBI HackerHarry浩3 小时前
Linux云计算训练营笔记day11(Linux CentOS7)
linux·运维·笔记·云计算