代码拉取完成,页面将自动刷新
#!/usr/bin/env bash
###################################################################
# Function :安装yum源 #
# Platform :RedHatEL7.x Based Platform #
# Version :1.0 #
# Date :2021-07-17 #
# Author :houxiaoshuai@baidu.com & hxsaj@126.com #
###################################################################
set -e
# 变量列表 Variable list
########## ########## ########## ########## ########## ########## #
# 指定镜像存放的位置
iso_dir=/iso
# 指定挂载点
iso_mount_dir=${iso_dir}/os
# 函数列表 Function list
########## ########## ########## ########## ########## ########## #
# 提示的色彩 echo -e "\033[38;46m 色彩测试-提示 \033[0m"
function show_notice() {
echo -e "\033[34;46m $@ \033[0m" >&1
}
# 警告的色彩 echo -e "\033[35;46m 色彩测试-警告 \033[0m"
function show_warning() {
echo -e "\033[35;46m $@ \033[0m" >&2
}
# 报错的色彩 echo -e "\033[1;31;46m 色彩测试-错误 \033[0m"
function show_error() {
echo -e "\033[1;31;46m $@ \033[0m" >&2
}
# 获取本机 IP 地址
function get_host_ip() {
ip a | grep -w inet | grep -v docker | grep -w global | awk -F "/" '{print $1}' | awk '{print $2}'
}
# 镜像挂载,参数:iso位置
function mount_iso() {
# 检查镜像文件存放目录和挂载目录
iso_name=$(basename ${1})
mount_i(){
if [ -d ${iso_mount_dir} ];then
if df -hT | grep -e ${iso_mount_dir} | grep iso9660 >/dev/null 2>&1; then
show_notice " 此镜像已经挂载 !" && exit 1
elif [ $(ls -A ${iso_mount_dir} | wc -w) -eq 0 ]; then
mount -t iso9660 ${iso_dir}/${1} ${iso_mount_dir} >/dev/null 2>&1
else
show_warning " 挂载点 ${iso_mount_dir} 不为空! "
fi
else
mkdir -p ${iso_mount_dir}
mount -t iso9660 ${iso_dir}/${1} ${iso_mount_dir} >/dev/null 2>&1
fi
}
# 检查文件存放位置
if [ -d ${iso_dir} ];then
if [ -f ${iso_dir}/${iso_name} ];then
mount_i ${iso_name}
else
cp ${1} ${iso_dir}/
mount_i ${iso_name}
fi
else
mkdir -p ${iso_dir}
cp ${1} ${iso_dir}/
mount_i ${iso_name}
fi
# 备份同名yum源文件
[ -f /etc/yum.repos.d/base_iso.repo ] && cp -a /etc/yum.repos.d/base_iso.repo{,.$(date +%Y-%m-%d_%H%M%S)}
# 生成本地yum源文件
cat >/etc/yum.repos.d/base_iso.repo <<EOF
[iso]
name=iso
baseurl=file://${iso_mount_dir}
enabled=1
gpgcheck=0
EOF
# 清空yum元数据
yum clean all >/dev/null 2>&1
# 生产yum元数据
yum makecache >/dev/null 2>&1
# 提示
show_notice " 本地yum环境部署完成! "
}
# 本地yum卸载
function uninstall_local_yum() {
# 删除repo文件
rm -f /etc/yum.repos.d/base_iso.repo
# 卸载
umount ${iso_mount_dir}
# 提示
show_notice " 本地 yum 环境已删除 "
}
# 基于http的yum源
function release_http_yum() {
# 安装http
[ $(rpm -qa | grep httpd | wc -l) -eq 0 ] && yum install httpd -y >/dev/null 2>&1
# 将 yum 源软连接到httpd服务目录下
[ ! -h /var/www/html/iso ] && ln -s ${iso_mount_dir} /var/www/html/iso
# 启动 httpd
systemctl restart httpd
# 生成http repo文件
cat >./base_http_iso.repo <<EOF
[iso]
name=iso
baseurl=http://$(get_host_ip)/iso
enabled=1
gpgcheck=0
EOF
# 打印文件信息
show_notice " 已生成base_http_iso.repo文件,复制到客户端服务器即可使用yum服务! "
}
# 关闭 基于http的yum源
function unrelease_http_yum() {
# 删除软连接
rm -f /var/www/html/iso
[ -f ./base_http_iso.repo ]&& rm -f ./base_http_iso.repo
# 提示
show_notice " yum http服务已关闭 "
}
# ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
if [ -z ${1} ];then
echo "e.g.: $0 [ {iso_path} | yumhttp | unyumhttp | unyumlocal ]" && exit
elif [ -f ${1} ];then
mount_iso ${1}
else
# 根据传参确定
case ${1} in
"yumhttp") release_http_yum ;;
"unyumhttp") unrelease_http_yum ;;
"unyumlocal") uninstall_local_yum ;;
# 输入不规范提示并退出
*) echo "e.g.: $0 [ yumlocal | yumhttp | unyumhttp | unyumlocal ]" && exit ;;
esac
fi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。