【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      #执行,无输出结果
相关推荐
笑稀了的野生俊36 分钟前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32‘ not found
linux·人工智能·ubuntu·大模型·glibc·flash-attn
千帐灯无此声1 小时前
Linux 测开:日志分析 + 定位 Bug
linux·c语言·c++·bug
誰能久伴不乏1 小时前
深入了解 Vim 编辑器:从入门到精通
linux·编辑器·vim
ghie90901 小时前
在Centos系统上如何有效删除文件和目录的指令汇总
linux·运维·centos
Linux-palpitate2 小时前
Keepalived+LVS实现LNMP网站的高可用部署
linux·运维·服务器·mysql·lvs
潇-xiao2 小时前
进程状态 + 进程优先级切换调度-进程概念(5)
linux·笔记
江公望3 小时前
Linux kernel regcache_cache_only()函数详解
linux
liuyunluoxiao3 小时前
基于生产者消费者模型的线程池【Linux操作系统】
linux
程序员黄老师4 小时前
Ubuntu 24.04上安装 Intelligent Pinyin 中文输入法
linux·运维·ubuntu
HONG_YANG5 小时前
ERPNext 介绍、安装和维护建议
linux