shell脚本--基础功能实现

实现功能

免密登录

通过调用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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河中医第一IKUN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值