实现功能
免密登录
通过调用shell命令来生成密钥并将公钥传送到目标主机,从而实现不同主机之间的免密登录
部署docker环境
(仅限于对软件的下载和安装,没有更换可用仓库源,需要自己手动更换)
通过yum进行docker-ce安装和启动,部署docker环境
配置k8s集群环境
暂时未实现
配置dns解析
通过在/etc/hosts文件中配置主机名和ip地址的相关信息来完成dns的解析
删除k8s集群环境
暂时未实现
关闭防火墙和Selinux
使用系统服务systemctl对防火墙进行关闭
使用sed修改Selinux配置文件实现Selinux的永久关闭
部署LAMP环境
安装Apache和MySQL服务以及php并且完成自动上线
删除LAMP环境
将相关服务全部删除
初始化(换源,安装常用工具)
使用curl命令将centos7的yum源仓库更换为阿里云的仓库,并且安装vim和wget,net-tools等常用工具来实现初始化
代码展示
主程序(main.sh)
在主程序使用source时替换成你自己自定义的路径
#!/bin/bash
#定义目录路径
dir=shell_scripts
#1 4 679 10 完成 || 2358未完成 部署docker,部署/删除k8s集群
source $dir/set_ssh.sh
source $dir/set_docker.sh
source $dir/set_k8s_cluster.sh
source $dir/set_dns.sh
source $dir/del_k8s_cluster.sh
source $dir/set_firewalld.sh
source $dir/set_normal.sh
source $dir/set_lamp.sh
source $dir/del_lamp.sh
end() {
message="
(oo)\\_______
(__)\\ )\\/\\
||----w |
|| ||
"
echo -e "$message"
}
meun() {
meun_array=("一键配置免密登录" "一键部署docker环境" "一键部署k8s集群" "一键配置DNS解析" "一键删除k8s集群" "关闭防火墙" "一键部署LAMP环境" "一键删除LAMP环境" "初始化(换源+常用工具安装)" "退出")
meun_lenght=${#meun_array[@]}
for i in $(seq 1 $meun_lenght);do
echo -e "\e[32m ${i}--${meun_array[$i-1]}\e[0m"
done
}
useage() {
echo -e "\e[33m请输入选项1-6\e[0m"
}
main() {
while true;do
meun
read -p "请输入你要使用的功能 " choice
case $choice in
1)
set_ssh
end;;
2)
set_docker
end;;
3)
add_k8s_cluster
end;;
4)
set_dns
end;;
5)
del_k8s_cluster
end;;
6)
set_firewalld
end;;
7)
set_lamp
end;;
8)
del_lamp
end;;
9)
set_normal
end;;
10)
exit;;
*)
useage
esac
done
}
main
免密登录(set_ssh.sh)
#!/bin/bash
set_ssh() {
#检查本地是否生成公钥
if [ -e $HOME/.ssh/id_rsa ];then
read -p "输入你要进行免密登录的IP " address
ping -c1 -W 1 ${address} &> /dev/null
if [ $? -ne 0 ] ;then
echo -e "\e[33m${address}不能正常通信\e[0m"
else
read -p "输入你要使用的用户(默认为root) " user
read -s -p "输入${address}的${user:-root}用户的密码 " password
#安装expect软件包
yum -y install expect &> /dev/null && echo -e "\e[32m安装完毕!\e[0m" || echo -e "\e[31m安装失败\e[0m"
#删除已知主机文件,防止后面程序受影响
rm -rf $HOME/.ssh/known_hosts
#使用expect自动化完成公钥传递
expect << EOF
spawn ssh-copy-id ${user:-root}@$address;
expect {
"Are you sure you want to continue connecting (yes/no)?" {
send "yes\r"
exp_continue
}
"password:" {
send "$password\r"
}
eof
}
EOF
fi
else
echo "公钥未生成"
fi
}
部署docker环境(set_docker.sh)
#!/bin/bash
set_docker() {
#关闭防火墙和Selinux
systemctl stop firewalld
setenforce 0
#直接使用yum进行docker的下载
yum -y install docker && echo -e "\e[32mdocker安装成功\e[0m" || echo -e "\e[31mdocker安装失败\e[0m"
#为docker设置国内加速
cat >/etc/docker/daemon.json << EOF
加速地址
EOF
#重启docker守护进程
systemctl daemon-reload
#重启docker
systemctl restart docker
#测试docker是否可以使用
docker images && echo "启动成功" || echo "启动失败"
}
部署k8s集群环境(set_k8s_cluster.sh)
#!/bin/bash
add_k8s_cluster() {
echo "This is add k8s"
}
配置dns解析(set_dns.sh)
#!/bin/bash
set_dns() {
flag=yes
while true; do
read -p "输入节点的IP地址" address
read -p "输入节点的DNS名称 " dns
echo $address $dns >> test.txt
read -p "是否继续(按q退出)" flag
if [ $flag == 'q' ];then
break
fi
done
}
删除k8s集群环境(del_k8s_cluster.sh)
#!/bin/bash
del_k8s_cluster() {
echo "This is del k8s"
echo
}
关闭防火墙和Selinux(set_firewalld.sh)
#!/bin/bash
set_firewalld() {
systemctl stop firewalld &> /dev/null && echo -e "\e[32m防火墙关闭成功\e[0m" || echo -e "\e[31m防火墙关闭失败\e[0m"
sleep 1
systemctl disable firewalld &> /dev/null && echo -e "\e[32m防火墙设置成功\e[0m" || echo -e "\e[31m防火墙设置失败\e[0m"
sleep 1
sed -ri 's/enforcing/disabled/' /etc/selinux/config
sleep 0.5
if [ $? -eq 0 ];then
echo -e "\e[32mSelinux成功关闭\e[0m"
else
echo -e "\e[31mSelinux成功失败\e[0m"
fi
sleep 0.5
}
部署LAMP环境(set_lamp.sh)
#!/bin/bash
source /root/shell_scripts/set_firewalld.sh
set_lamp() {
#关闭防火墙 关闭Selinux
set_firewalld
#安装httpd
yum -y install httpd &> /dev/null && echo -e "\e[32mhttpd安装成功\e[0m" || echo -e "\e[31mhttpd安装失败\e[0m"
sleep 0.5
#删除80端口下的进程
yum -y install lsof &> /dev/null
for pid in `lsof -i:80 | grep -v "PID" | awk '{print $2}'`;do
kill -15 $pid
done
#启动httpd服务
systemctl enable --now httpd &> /dev/null && echo -e "\e[32mhttpd配置成功\e[0m" || echo -e "\e[31mhttpd配置失败\e[0m"
#配置httpd
yum -y install wget &> /devnull
wget www.jd.com -O /var/www/html/index.html &> /dev/null && echo -e "\e[32m前端页面配置成功\e[0m" || echo -e "\e[31m前端页面配置失败\e[0m"
sleep 0.5
#重启httpd服务
systemctl restart httpd &> /dev/null
sleep 0.5
curl -I localhost:80 &> /dev/null && echo -e "\e[32m配置成功\e[0m" || echo -e "\e[31m配置失败\e[0m"
#初始化Mysql
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm &> /dev/null
rpm -ivh mysql80-community-release-el7-11.noarch.rpm &> /dev/null
yum -y install mysql mysql-server &> /dev/null
systemctl start mysqld
if [ $? -eq 0 ];then
echo -e "\e[32m初始化成功\e[0m"
else
echo -e "\e[31m初始化成功\e[0m"
fi
#配置Mysql
yum -y install expect &> /dev/null
#获取Mysql默认密码
password=`grep "password" /var/log/mysqld.log |awk -F":" '{NR==1;print $NF}' | xargs`
#登录数据库并更改密码
read -s -p "输入你要更改的密码 " new_password
expect <<EOF
spawn mysql -uroot -p
expect "Enter password: "
send "$password\r"
expect "mysql> "
send "alter user root@'localhost' identified by '$new_password';\r"
expect "mysql> "
send "exit\r"
expect eof
EOF
}
删除LAMP环境(del_lamp.sh)
#!/bin/bash
del_lamp() {
#关闭相关服务
systemctl disable --now httpd mysqld php-fpm
#删除相关文件和软件包
#删除Apache相关信息
rm -rf /etc/http
rm -rf /var/www/html/*
yum -y remove httpd
#删除MySQL相关服务
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql
rm -rf /var/log/mysql
yum -y remove mysqld
#卸载php相关信息
yum -y remove php*
}
初始化(set_normal.sh)
#!/bin/bash
set_normal() {
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
if [ $? -eq 0 ];then
echo -e "\e[32m阿里云源仓库安装成功\e[0m"
else
echo -e "\e[31m阿里云源仓库安装失败\e[0m"
fi
sleep 0.5
packages=(epel-release wget vim lrzsz createrepo)
for i in ${packages[@]};do
echo -e "\e[33m正在安装${i}\e[0m"
yum -y install $i &> /dev/null && echo -e "\e[32m${i}安装完成\e[0m"
sleep 1
done
}