当前位置: 首页 > news >正文

课时89:流程控制_函数进阶_函数变量

2.1.4 综合案例

这一节,我们从 信息采集、环境部署、小结 三个方面来学习。

信息采集

脚本实践-采集系统负载信息

查看脚本内容
[root@localhost ~]# cat function_systemctl_load.sh
#!/bin/bash
# 功能:采集系统负载信息
# 版本:v0.3
# 作者:书记
# 联系:www.superopsmsb.com# 定制资源类型
resource_type=(CPU MEM)# 定制cpu信息输出函数
cpu_info() {cpu_attribute=(1 5 15)cpu_load=($(uptime | tr -s " " | cut -d " " -f 11-13 | tr "," " "))echo -e "\e[31m\t系统CPU负载信息\e[0m"echo -e "\e[32m================================"for index in ${!cpu_attribute[@]}doecho "CPU ${cpu_attribute[$index]} min平均负载为: ${cpu_load[$index]}" doneecho -e "================================\e[0m"	
}
# 获取内存相关属性信息
mem_info() {free_attribute=(总量 使用 空闲)free_info=($(free -m | grep Mem | tr -s " " | cut -d " " -f 2-4))echo -e "\e[31m\t系统内存负载信息\e[0m"echo -e "\e[32m================================"for index in ${!free_attribute[@]}doecho "内存 ${free_attribute[$index]} 信息为: ${free_info[$index]} M" doneecho -e "================================\e[0m"
}# 服务的操作提示
echo -e "\e[31m---------------查看资源操作动作---------------1: CPU  2: MEM
-------------------------------------------"'\033[0m'
# 选择服务操作类型
while true
doread -p "> 请输入要查看的资源信息类型: " resource_idechocase ${resource_type[$resource_id-1]} in"CPU")cpu_info;;"MEM")mem_info;;*)echo -e "\e[31m\t请输入有效的信息类型\e[0m";;esac
done
脚本使用效果
[root@localhost ~]# /bin/bash function_systemctl_load.sh
---------------查看资源操作动作---------------1: CPU  2: MEM
-------------------------------------------
> 请输入要查看的资源信息类型: 1系统CPU负载信息
================================
CPU 1 min平均负载为: 0.00
CPU 5 min平均负载为: 0.01
CPU 15 min平均负载为: 0.05
================================
> 请输入要查看的资源信息类型: 2系统内存负载信息
================================
内存 总量 信息为: 3770 M
内存 使用 信息为: 237 M
内存 空闲 信息为: 3290 M
================================
> 请输入要查看的资源信息类型: 3请输入有效的信息类型
> 请输入要查看的资源信息类型: ^C
[root@localhost ~]#

环境部署

需求

定制kubernetes环境部署管理的功能脚本改造1 功能函数实现2 扩充while循环执行功能3 增加q退出环境功能

脚本内容

查看脚本内容
[root@localhost ~]# cat function_kubernetes_manager.sh
#!/bin/bash
# 功能:定制kubernetes环境部署管理的功能
# 版本:v0.2
# 作者:书记
# 联系:www.superopsmsb.com# 定制数组变量
env_array=(base ha k8s_base master slave)# 监控平台的信息提示
menu(){echo -e "\e[31m     欢迎使用kubernetes部署平台"echo -e "\e[32m-----------请选择部署阶段-----------"echo -e " 1: 基础环境部署"echo -e " 2: 高可用环境部署"echo -e " 3: kubernetes基础环境部署"echo -e " 4: 主角色环境部署"echo -e " 5: 从角色环境部署"echo -e " q: 退出"echo -e "----------------------------------\033[0m"
}
# 定制基础环境
os_base_func(){echo -e "\e[31m开始基础环境部署..."echo "1 执行跨主机免密码操作"echo "2 执行时间同步操作"echo "3 执行内核配置操作"echo -e "4 执行容器私有仓库部署操作\e[0m"
}# 定制高可用环境
ha_func(){echo -e "\e[31高可用环境部署..."echo "1 执行高可用环境部署操作"echo -e "2 执行负载均衡环境部署操作\e[0m"
}# 定制k8s基础环境
k8s_base_func(){echo -e "\e[31mkubernetes基础环境部署..."echo "1 执行证书管理操作"echo "2 执行etcd环境部署操作"echo -e "3 执行集群证书配置操作\e[0m"
}# 定制主角色环境
master_func(){echo -e "\e[31m主角色环境部署..."echo "1 执行apiserver环境部署操作"echo "2 执行scheduler环境部署操作"echo "3 执行controller环境部署操作"echo "4 执行认证配置操作"echo "5 执行容器环境部署操作"echo "6 执行kubelet环境部署操作"echo -e "7 执行kube-proxy环境部署\e[0m"
}
# 定制从角色环境
slave_func(){echo -e "\e[31m主角色环境部署..."echo "1 执行容器环境部署操作"echo "2 执行kubelet环境部署操作"echo -e "3 执行kube-proxy环境部署\e[0m"
}
# 定制错误提示信息
usage_func(){echo -e "\e[31m请输入有效的功能场景标识\e[0m"
}# 脚本内容的判断
while true
do# 定制业务逻辑menuread -p "请输入功能标识: " env_idif [ ${env_id} == "q" ];thenexitelse# 执行配套业务逻辑case "${env_array[$env_id-1]}" in"base")os_base_func;;"ha")ha_func;;"k8s_base")k8s_base_func;;"master")master_func;;"slave")slave_func;;*)usage_func;;esacfi
done
脚本执行效果
[root@localhost ~]# /bin/bash function_kubernetes_manager.sh欢迎使用kubernetes部署平台
-----------请选择部署阶段-----------1: 基础环境部署2: 高可用环境部署3: kubernetes基础环境部署4: 主角色环境部署5: 从角色环境部署q: 退出
----------------------------------
请输入功能标识: 6
请输入有效的功能场景标识欢迎使用kubernetes部署平台
-----------请选择部署阶段-----------1: 基础环境部署2: 高可用环境部署3: kubernetes基础环境部署4: 主角色环境部署5: 从角色环境部署q: 退出
----------------------------------
请输入功能标识: 5
主角色环境部署...
1 执行容器环境部署操作
2 执行kubelet环境部署操作
3 执行kube-proxy环境部署欢迎使用kubernetes部署平台
-----------请选择部署阶段-----------1: 基础环境部署2: 高可用环境部署3: kubernetes基础环境部署4: 主角色环境部署5: 从角色环境部署q: 退出
----------------------------------
请输入功能标识: q

小结


http://www.lryc.cn/news/334559.html

相关文章:

  • Linux命令-dpkg-preconfigure命令(Debian Linux中软件包安装之前询问问题)
  • SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读
  • 《springcloud alibaba》 四 seata安装以及使用
  • -bash: cd: /etc/hadoop: 没有那个文件或目录
  • JVM字节码与类加载——字节码指令集与解析
  • 景芯2.5GHz A72训练营dummy添加(一)
  • React - 请你说一说setState是同步的还是异步的
  • 设计模式之命令模式(下)
  • 【opencv】示例-demhist.cpp 调整图像的亮度和对比度,并在GUI窗口中实时显示调整后的图像以及其直方图。...
  • 计算机网络---第三天
  • 怎么防止文件被拷贝,复制别人拷贝电脑文件
  • 流式密集视频字幕
  • 【教程】iOS Swift应用加固
  • 新型基础设施建设(新基建)
  • 蓝桥杯 第 9 场 小白入门赛 字符迁移
  • 泰迪智能科技人工智能应用工程师(中级)特训营
  • 【数据结构】考研真题攻克与重点知识点剖析 - 第 6 篇:图
  • java的基本数据类型
  • 0104练习与思考题-算法基础-算法导论第三版
  • 烤羊肉串引来的思考--命令模式
  • Python 描述符
  • Go语言创建HTTP服务器
  • 【LeetCode热题100】【栈】柱状图中最大的矩形
  • 谷歌浏览器插件开发速成指南:弹窗
  • Lakehouse 大数据概念
  • MySQL学习笔记(二)
  • Verilog语法——按位取反“~“和位宽扩展的优先级
  • Navicat工具使用
  • linux常用指令(一)——mv、rm、which、find
  • lottery-攻防世界