Shell 虚拟机基线配置脚本示例

2024-01-24 11:12

本文主要是介绍Shell 虚拟机基线配置脚本示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是一个配置虚拟机基线的示例,包含关闭防火墙、禁用SElinux、设置时区、安装基础软件等。

这只是一个简单的模板,基线配置方面有很多,后续可以按照这个模板去逐步添加

代码示例

[root@bogon ~]# cat bastic.sh 
#!/bin/bashRED='\E[1;31m'
GREEN='\E[1;32m'
RES='\E[0m'# 显示菜单选项
echo "请选择一个选项:"
echo "1. 关闭防火墙,禁止开机自启动"
echo "2. 关闭SElinux"
echo "3. 设置时区"
echo "4. 设置最大文件打开数量为65535"
echo "5. 安装基础软件包:[tcpdump,net-tools,wget,telnet,nmap-ncat,rsync,lrzsz]"
echo "6. 执行全部选项"
echo "7. 退出"function stop_firewalld {systemctl stop firewalldsystemctl disable firewalldif [ $? -eq 0 ]; thenecho -e "${GREEN} [+] 已关闭防火墙,禁止开机自启 ${RES}"elseecho -e "${RED} [-] 关闭防火墙失败 ${RES}"fi
}function selinux_set {sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configif [ $? -eq 0 ]; thenecho -e "${GREEN} [+] SElinux 已关闭 ${RES}"elseecho -e "${RED} [-] 关闭SElinux失败 ${RES}"fi
}function datetime_set {timedatectl set-timezone Asia/Shanghaiif [ $? -eq 0 ]; thenecho -e "${GREEN} [+] 已设置时区为上海时区 ${RES}"elseecho -e "${RED} [-] 设置时区失败 ${RES}"fi
}function fileopen_set {echo "* soft nofile 65535" >> /etc/security/limits.confecho "* hard nofile 65535" >> /etc/security/limits.confsysctl -pif [ $? -eq 0 ]; thenecho -e "${GREEN} [+] 已设置文件最大打开数量为65535  ${RES}"elseecho -e "${RED} [-] 设置文件打开数量失败 ${RES}"fi
}function package_install {if [[ $EUID -ne 0 ]]; thenecho -e "${RED} [-] 请使用root用户执行该脚本 ${RES}" exit 1fipackages=(tcpdumpnet-toolswgettelnetnmap-ncatrsynclrzsz)echo "------开始安装基础软件包------"for package in "${packages[@]}";doecho -e "------正在检查软件包:$package 是否安装------"if rpm -q "$package" >> /dev/null 2>&1;thenecho "软件包 $package 已经安装,跳过..."elseecho "------正在安装软件包------"yum -y install "$package"if [ $? -eq 0 ]; thenecho -e "${GREEN} [+] 基础依赖包 $package 安装成功 ${RES}"elseecho -e "${RED} [-] 基础依赖包安装失败 ${RES}"fifidone
}read choicecase $choice in1)stop_firewalld;;2)selinux_set;;3)datetime_set;;4)fileopen_set;;5)package_install;;6)stop_firewalldselinux_setdatetime_setfileopen_setpackage_install;;7)exit;;*)echo "无效选项";;
esac

结果

输入6,就是执行全部选项

当然也能单独执行,例如输入5,就提示软件包已安装,跳过。。。

这篇关于Shell 虚拟机基线配置脚本示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/639511

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA