Linux实战(12):Centos装机常用脚本-进阶版
#!/bin/bash
#shell菜单演示
function menu()
{
echo -e `date`
cat <<EOF
-----------------------------------
>>>菜单主页:
`echo -e "\033[35m 1)系统状态\033[0m"`
`echo -e "\033[35m 2)服务管理\033[0m"`
`echo -e "\033[35m 3)主菜单\033[0m"`
`echo -e "\033[35m Q)退出\033[0m"`
EOF
read -p "请输入对应序列号:" num1
case $num1 in
1)
echo -e "\033[32m >>>系统状态-> \033[0m"
system_menu
;;
2)
echo -e "\033[32m >>>服务管理-> \033[0m"
server_menu
;;
3)
echo -e "\033[32m >>>返回主菜单-> \033[0m"
menu
;;
Q|q)
echo -e "\033[32m--------退出--------- \033[0m"
exit 0
;;
*)
echo -e "\033[31m err:请输入正确的编号\033[0m"
menu
esac
}
function system_menu()
{
cat<<EOF
------------------------
********系统状态********
------------------------
1)docker 状态
2)selinux 状态
3)firewall 状态
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num2
case $num2 in
1)
`echo -e "systemctl status docker"`
system_menu
;;
2)
`echo -e "getenforce"`
system_menu
;;
3)
`echo -e "systemctl status firewalld"`
system_menu
;;
x|X)
echo -e "\033[32m---------返回上一级目录------->\033[0m"
menu
;;
*)
echo -e "请输入正确编号"
system_menu
esac
}
function server_menu()
{
cat<<EOF
------------------------
********服务管理********
------------------------
1)开启服务
2)停止服务
3)升级配置服务
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num3
case $num3 in
1)
op_menu
;;
2)
op_menu1
;;
3)
op_menu2
;;
x|X)
echo -e "\033[32m-- -----返回上一级目录---------> \033[0m"
menu
;;
*)
echo -e "请输入正确编号"
system_menu
esac
}
function op_menu()
{
cat<<EOF
------------------------
1)开启docker服务
2)开启selinux服务
3)开启firewall服务
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num4
case $num4 in
1)
`echo -e "systemctl start docker"`
op_menu
;;
2)
echo "注意此操作为临时开启,重启失效"
setenforce 1
op_menu
;;
3)
`echo -e "systemctl start firewalld"`
op_menu
;;
x|X)
echo -e "\033[32m--------返回上一级目录------->\033[0m"
server_menu
;;
*)
echo -e "请输入正确编号"
op_menu
esac
}
function op_menu1()
{
cat<<EOF
------------------------
1)停止docker服务
2)临时关闭selinux
3)停止firewall服务
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num5
case $num5 in
1)
`echo -e "systemctl stop docker"`
op_menu1
;;
2)
echo "注意此操作为临时关闭,重启失效"
`echo -e "setenforce 0"`
op_menu1
;;
3)
`echo -e "systemctl stop firewalld"`
op_menu1
;;
x|X)
echo -e "\033[32m >>>返回上一级目录---> \033[0m"
server_menu
;;
*)
echo -e "请输入正确编号"
op_menu1
esac
}
function op_menu2()
{
cat<<EOF
------------------------
1)更改yum源
2)配置docker加速
3)升级python到3
4) 升级python3后配置
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num6
case $num6 in
1)
yum install wget -y #先安装wget命令
echo "------------------------安装wget命令------------------------"
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
echo 备份完毕
releasetmp=`cat /etc/redhat-release | awk '{match($0,"release ")
print substr($0,RSTART+RLENGTH)}' | awk -F '.' '{print $1}'`
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-$releasetmp.repo
if [[ $? -eq 0 ]];then
echo -e "\033[32m# yum 源已成功更新为 aliyun_repo #\033[0m";
sleep 3;
else
echo -e "\033[31m# yum 源未成功更新为 aliyun_repo #\n3s 后退出...\033[0m";
exit;
fi
yum clean all && yum makecache && yum -y update
echo "------------------------更新完毕------------------------"
op_menu2
;;
2)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0khgh4v2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload && sudo systemctl restart docker
echo "------------------------Docker加速配置完毕------------------------"
op_menu2
;;
3)
yum install libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y && wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz -O $PWD/Python-3.7.0.tgz && tar -zxvf Python-3.7.0.tgz
if [! -d "/usr/local/python3"];then
mkdir /usr/local/python3 && cd $PWD/Python-3.7.0 && ./configure --prefix=/usr/local/python3
make && make install
elif [! -d "$PWD/Python-3.7.0.tgz"];then
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz -O $PWD/Python-3.7.0.tgz
else
cd $PWD/Python-3.7.0 && ./configure --prefix=/usr/local/python3
make && make install
fi
op_menu3
;;
4)
echo -e "\033[32m >>>进入目录---> \033[0m"
op_menu3
;;
x|X)
echo -e "\033[32m >>>返回上一级目录---> \033[0m"
server_menu
;;
*)
echo -e "请输入正确编号"
op_menu2
esac
}
function op_menu3()
{
cat<<EOF
------------------------
1)配置Python,pip默认
2)配置yum
3)配置防火墙
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num7
case $num7 in
1)
python2_path=`ls -al /usr/bin | grep -w "python -> python2" | awk '{print $9,$10,$11}' | wc -l`
#python_path=`ls -l /usr/bin/python* | grep -w "python -> python2" | awk '{print $9}'`
if [ x"$python2_path" != x"0" ];then
echo -e "\033[32m <---------------未修改,现在开始修改默认python,pip--------------> \033[0m"
mv /usr/bin/python /usr/bin/python.bak && rm -rf /usr/bin/python && rm -rf /usr/bin/pip && ln -s /usr/local/python3/bin/python3 /usr/bin/python && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
echo -e "\033[32m <---------------已更改结束--------------> \033[0m"
else
echo -e "\033[32m <---------------已经修改无需配置--------------> \033[0m"
fi
op_menu3
;;
2)
yum_path=`cat /usr/bin/yum | grep -w "/usr/bin/python" | wc -l`
yum_path1=`cat /usr/libexec/urlgrabber-ext-down | grep -w "/usr/bin/python" | wc -l`
if [ x"$yum_path" != x"0" ]
then
echo -e "\033[32m <---------------修改第一步--------------> \033[0m"
sed -i "1c #!/usr/bin/python2" /usr/bin/yum
echo -e "\033[32m <---------------第一步已更改结束--------------> \033[0m"
else
echo -e "\033[32m <---------------第一步已改动--------------> \033[0m"
fi
if [ x"$yum_path1" != x"0" ]
then
echo -e "\033[32m <---------------修改第二步--------------> \033[0m"
sed -i '1c #!/usr/bin/python2' /usr/libexec/urlgrabber-ext-down
echo -e "\033[32m <---------------第二步已更改结束--------------> \033[0m"
else
echo "------------------------第二步已改动------------------------"
fi
op_menu3
;;
3)
firewall_path=`cat /usr/sbin/firewalld | grep -w "/usr/bin/python" | wc -l`
if [ x"$firewall_path" != x"0" ];then
echo -e "\033[32m <---------------未修改,现在开始修改默认firewall--------------> \033[0m"
sed -i "1c #!/usr/bin/python2" /usr/sbin/firewalld
echo -e "\033[32m <---------------已更改结束--------------> \033[0m"
else
echo -e "\033[32m <---------------已经修改无需配置--------------> \033[0m"
fi
op_menu3
;;
x|X)
echo -e "\033[32m >>>返回上一级目录---> \033[0m"
server_menu
;;
*)
echo -e "请输入正确编号"
op_menu3
esac
}
menu
Linux实战(12):Centos装机常用脚本-进阶版的更多相关文章
- Linux学习之CentOS(七)---常用基本操命令1
cd pwd mkdir rmdir ls cp rm mv cat tac nl more less head tail touch ①目录管理:ls.cd. ...
- linux rhel unix centos FreeBSD 常用命令
一:使用CentOS常用命令查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /pr ...
- Shell 实践、常用脚本进阶
1.备份单个文件 #!/bin/bash #备份单个文件 DATE=`/bin/date +%y%m%d` /bin/tar -czpf /backup/$1.$DATE.tar.gz /backup ...
- Linux [Ubuntu 12.0.1] 常用命令
1.文件名颜色的含义1)默认色代表普通文件.例:install.log2)绿色代表可执行文件.例:rc.news3)红色代表tar包 文件. 例:vim-7.1.tar.bz24)蓝色代表目录文件. ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)
centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本) ##################### sendmail.py begin ######## ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- linux常用脚本
转载于http://justcoding.iteye.com/blog/1943504 我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个l ...
- Linux学习之CentOS(二)--初识linux的一些常用命令
Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...
随机推荐
- Spring MVC 的运行流程
1.用户发送请求到DispatcherServlet 2.DispatcherServlet调用处理器映射器(HanderMapping)找到处理器 3.处理器映射器(HanderMapping)返回 ...
- Spark本地配置
1. 下载解压安装包 tar -xvf spark-2.0.2-bin-hadoop2.6.tgz tar -xvf scala-2.11.8.tgz 2. 修改Spark配置文件 cd spark- ...
- 小案例-WebSocket实现简易聊天室
前言 在详解 HTTP系列之一讲到HTTP/2.0 突破了传统的"请求-问答模式"这一局限,实现了服务器主动向客户端传送数据.而本章将通过一种在单个TCP连接上进行全双工通信的协议 ...
- 这么高颜值的Kubernetes管理工具Lens,难道还不能C位出道吗
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Docker & Kubernetes相关文章:容器技术 一直使用官方的Kubernetes Dashboard来管 ...
- 23种设计模式 - 状态变化(Memento备忘录 - State)
其他设计模式 23种设计模式(C++) 每一种都有对应理解的相关代码示例 → Git原码 ⌨ 状态变化 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的 ...
- laravel Application实例化后两个方法
laravel容器初始化registerBaseServiceProviders方法 上篇讲解了laravel容器的基本使用和原理,这篇继续Application构造方法中的registerBaseS ...
- Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...
- php 循环里面套sql怎么解决
功能要求: 企业列表(展示企业的基本信息,这里只获取了名称.logo.和服务类型), 服务类型说明: 服务类型一共3级,1.2级是必填的,3级是非必填,如果填的话最多3个, 服务类型1.2.3保存在一 ...
- Mac 安装多个版本jdk
JDK默认安装路径为/Library/Java/JavaVirtualMachines 多版本安装后效果为: 设置 1.执行以下命令 cd ~ open -e .bash_profile #打开.ba ...
- Transform与Vector3 的API
Transform.InverseTransformDirection(Vector3 direction) Vector3.ProjectOnPlane(Vector3 vector, Vector ...