无聊,近期痴迷编程,没事就写写和代码练练手。这次写了个自动安装的代码菜单功能比较,相对比较省事。多台主机安装方便。仅供参考,大佬勿喷颜色控制判断软件是否安装没有安装已经安装安装组件已经安装配置请输的未。。。。。。。
无聊,近期痴迷编程,没事就写写shell和Python代码练练手。
这次写了个自动安装saltstack的shell代码菜单
功能比较low,相对比较省事。多台主机安装方便。仅供参考,大佬勿喷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
#!/bin/bash
#颜色控制
red='\033[1;31m'
black='\033[0m'
Orange='\033[35m'
background='\033[0m'
minion_file='/etc/salt/minion'
datetime=`date +"%F %T"`
#判断软件是否安装
function if_installed(){
salt_name=$1
salt_status=`rpm -qa | grep $salt_name`
if [ ! -n "$salt_status" ];then
echo "$salt_name没有安装"
return 2
else
echo "$salt_name已经安装"
echo $salt_status
fi
}
#安装master组件
function install_master(){
salt_name=$1
if_installed $salt_name
if [ $? -eq 2 ];then
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
sed -i "s/repo.saltstack.com/mirrors.aliyun.com\/saltstack/g" /etc/yum.repos.d/salt-latest.repo
yum install -y $salt_name
systemctl enable $salt_name
systemctl start $salt_name
echo "s$salt_name已经安装"
fi
}
#4)salt-minion配置
function salt-minion(){
read -p "请输salt-master的IP:" master_ip
if [ ! -n "$master_ip" ];then
echo "未获取salt-master的IP,无法配置salt-minion"
else
if [ -f "$minion_file" ]; then
num1=`grep -vE '^#|^$' $minion_file | grep master |wc -l `
old_ip=`grep -vE '^#|^$' $minion_file | grep master | awk -F ":" '{print $2}'`
if [ $num1 -eq 0 ];then
sed -i "17i master: $master_ip" $minion_file
echo "salt-minion配置salt-master的IP为:$master_ip"
else
sed -i "s/$old_ip/$master_ip/" $minion_file
echo "salt-minion配置salt-master的IP为:$master_ip"
fi
else
echo "$minion_file文件不存在"
fi
fi
}
#删除软件
function salt_remove(){
salt_name=$1
salt_status=`rpm -qa | grep $salt_name`
if [ ! -n "$salt_status" ];then
echo "$salt_name没有安装"
else
rpm -qa | grep $salt_name | xargs rpm -e
if [ $? -eq 0 ];then
echo "$salt_name已经卸载"
fi
fi
}
#重启服务
function salt_restart(){
salt_name=$1
if_installed $salt_name
if [ $? -eq 2 ];then
echo ""
else
systemctl restart $salt_name
echo "$salt_name已经重启"
fi
}
#菜单
function menu()
{
echo -e " $datetime"
cat <<EOF
--------------------------------------------
`echo -e " $black SaltStack菜单主页$background"`
`echo -e "$Orange 1)安装slat-master $background"` `echo -e "$Orange 2)安装salt-minion$background"`
`echo -e "$Orange 3)是否软件安装查询$background"` `echo -e "$Orange 4)salt-minion配置$background"`
`echo -e "$Orange 5)卸载slat-master$background"` `echo -e "$Orange 6)卸载slat-minion$background"`
`echo -e "$Orange 7)重启slat-master$background"` `echo -e "$Orange 8)重启slat-minion$background"`
`echo -e "$Orange Q)退出$background"`
--------------------------------------------
EOF
read -p "请输入对应序列号:" num1
case $num1 in
1)
install_master salt-master
menu
;;
2)
install_master salt-minion
menu
;;
3)
if_installed salt-master
if_installed salt-minion
menu
;;
4)
salt-minion
menu
;;
5)
salt_remove salt-master
menu
;;
6)
salt_remove salt-minion
menu
;;
7)
salt_restart salt-master
menu
;;
8)
salt_restart salt-minion
menu
;;
Q|q)
exit 0
;;
*)
echo -e "\033[31m err:请输入正确的编号\033[0m"
menu
esac
}
menu
|