当前位置:网站首页>【shell脚本】使用菜单命令构建在集群内创建文件夹的脚本
【shell脚本】使用菜单命令构建在集群内创建文件夹的脚本
2022-07-06 08:58:00 【chaolei_9527】
背景
有一个需求,需要在集群内的各个主机创建一样的目录,比如要新增目录x,那么该集群内的所有主机都需要创建该x目录,并更改目录的执行权限。
实现
为了方便操作,准备使用菜单命令构建选项,脚本根据选项选择对应的操作。
2.1 配置文件
services_conf 配置如下:
test1/logs;test1/project-logs;test1/agent/logs
test2/logs;test2/project-logs;test2/agent/logs
test3/logs;test3/project-logs;test3/agent/logs
test4/logs;test4/project-logs;test4/agent/logs
2.2 脚本
#!/bin/bash
# 判断配置文件是否存在
function file_exist() {
conf_filename=$1
[ ! -f $conf_filename ] && {
echo "there is no conf file named $conf_filename"
exit 1
}
}
# 在集群中执行命令
function create_dir() {
echo "ansible 要执行的命令是 $1"
ansible all -m shell -a "$1"
}
function main_op() {
services_conf=$1
services_name=`cat $services_conf | grep -v "^#"`
oldIFS=$IFS
IFS=$'\n'
for service in $services_name
do
echo "service:$service 开始处理........."
IFS=$";"
for sub_item in $service
do
#文件夹如果不存在则创建
if [ ! -d /home/work/chao/$sub_item ];then
create_dir "mkdir -p /home/work/chao/$sub_item && chmod -R 777 /home/work/chao/$sub_item"
else
echo "$sub_item已存在..............."
fi
done
echo "$service处理完毕..................."
echo
done
IFS=$oldIFS
}
##########脚本开始执行
echo "Now ,the shell will be executed named $0.............."
PS3="Enter option"
flag=1
while [ $flag -eq 1 ]
do
echo "Please input a number: 1. 创建目录; 2.退出"
select option in "创建目录" "退出"
do
case $option in
"退出")
flag=0
break
;;
"创建目录")
echo -e "\033[31m 开始创建目录操作................\033[0m"
file_exist services_conf
main_op services_conf
echo
echo -e "\033[31m 完成创建目录................\033[0m"
;;
*)
clear
echo "对不起,输入的选项有误!"
echo "Please input a number: 1. 创建目录; 2.退出"
;;
esac
#select
done
#while
done
边栏推荐
- [embedded] print log using JLINK RTT
- Using label template to solve the problem of malicious input by users
- R language ggplot2 visualization: place the title of the visualization image in the upper left corner of the image (customize Title position in top left of ggplot2 graph)
- BN folding and its quantification
- LeetCode:221. 最大正方形
- Using pkgbuild:: find in R language_ Rtools check whether rtools is available and use sys The which function checks whether make exists, installs it if not, and binds R and rtools with the writelines
- Warning in install. packages : package ‘RGtk2’ is not available for this version of R
- Leetcode: Sword finger offer 42 Maximum sum of continuous subarrays
- 注意力机制的一种卷积替代方式
- LeetCode:劍指 Offer 42. 連續子數組的最大和
猜你喜欢
I-BERT
MongoDB 的安装和基本操作
Warning in install. packages : package ‘RGtk2’ is not available for this version of R
[OC foundation framework] - string and date and time >
Computer graduation design PHP Zhiduo online learning platform
Excellent software testers have these abilities
BN折叠及其量化
Guangzhou will promote the construction of a child friendly city, and will explore the establishment of a safe area 200 meters around the school
自定义卷积注意力算子的CUDA实现
After reading the programmer's story, I can't help covering my chest...
随机推荐
CUDA实现focal_loss
项目连接数据库遇到的问题及解决
随手记01
LeetCode:214. 最短回文串
postman之参数化详解
一篇文章带你了解-selenium工作原理详解
LeetCode:221. 最大正方形
[text generation] recommended in the collection of papers - Stanford researchers introduce time control methods to make long text generation more smooth
LeetCode:41. 缺失的第一个正数
数学建模2004B题(输电问题)
Cesium draw points, lines, and faces
Leetcode: Sword finger offer 48 The longest substring without repeated characters
LeetCode:剑指 Offer 04. 二维数组中的查找
[OC]-<UI入门>--常用控件的学习
超高效!Swagger-Yapi的秘密
Intel distiller Toolkit - Quantitative implementation 1
什么是MySQL?MySql的学习之路是怎样的
Navicat Premium 创建MySql 创建存储过程
LeetCode:162. 寻找峰值
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower