2.4.5 综合案例
学习目标
这一节,我们从 信息收集、其他实践、小结 三个方面来学习。
信息收集
案例需求
根据提示信息,选择输出 cpu 或者 内存信息。
脚本实践-采集系统负载信息
查看脚本内容
[root@localhost ~]# cat systemctl_load.sh
#!/bin/bash
# 功能:采集系统负载信息
# 版本:v0.2
# 作者:书记
# 联系:www.superopsmsb.com# 定制资源类型
resource_type=(CPU MEM)
cpu_attribute=(1 5 15)
free_attribute=(总量 使用 空闲)# 获取相关的属性信息
cpu_load=($(uptime | tr -s " " | cut -d " " -f 11-13 | tr "," " "))
free_info=($(free -m | grep Mem | tr -s " " | cut -d " " -f 2-4))
# 服务的操作提示
echo -e "\e[31m---------------查看资源操作动作---------------1: CPU 2: MEM
-------------------------------------------"'\033[0m'
# 选择服务操作类型
read -p "> 请输入要查看的资源信息类型: " resource_id
echo
if [ ${resource_type[$resource_id-1]} == "CPU" ]
thenecho -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"
elif [ ${resource_type[$resource_id-1]} == "MEM" ]
thenecho -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"
fi
脚本使用效果
[root@localhost ~]# /bin/bash systemctl_load.sh
---------------查看资源操作动作---------------1: CPU 2: MEM
-------------------------------------------
> 请输入要查看的资源信息类型: 1系统CPU负载信息
================================
CPU 1 min平均负载为: 0.00
CPU 5 min平均负载为: 0.01
CPU 15 min平均负载为: 0.05
================================
[root@localhost ~]# /bin/bash systemctl_load.sh
---------------查看资源操作动作---------------1: CPU 2: MEM
-------------------------------------------
> 请输入要查看的资源信息类型: 2系统内存负载信息
================================
内存 总量 信息为: 3770 M
内存 使用 信息为: 247 M
内存 空闲 信息为: 3302 M
================================
其他实践
需求
按照信息提示,分别打印 三角形 和 等腰梯形* ****** * ******** * * ********** * * * ************ * * * * *************
脚本内容
[root@localhost ~]# cat drawn_graph.sh
#!/bin/bash
# 功能:打印相关图形
# 版本:v0.1
# 作者:书记
# 联系:www.superopsmsb.comgraph_type=(三角形 梯形)
# 服务的操作提示
echo -e "\e[31m---------------查看可以绘制的图形---------------1: 三角形 2: 梯形
-------------------------------------------"'\033[0m'
# 选择服务操作类型
read -p "> 请输入要查看的资源信息类型: " graph_id
case ${graph_type[$graph_id-1]} in"三角形")read -p "> 请输入三角形绘制的层数: " layer_num# 定制打印n层的三角形for i in $(seq 1 ${layer_num});do# 定制打印三角形左侧的空格效果for m in $(seq $[${layer_num}-$i]);doecho -n " "done# 定制打印三角形核心部分for j in $(seq $i);doecho -n "* "done# 打印完每行就换行echodone;;"梯形")read -p "> 请输入梯形绘制的层数: " layer_num# 定制打印n层的梯形print_num=${layer_num}for i in $(seq 1 ${layer_num});do# 定制打印梯形左侧的空格效果for m in $(seq $[${layer_num}-$i]);doecho -n " "done# 定制打印梯形核心部分for j in $(seq $[$print_num]);doecho -n "*"donelet print_num+=2echodone;;*)echo -e "\e[31m\t请输入正确的绘图类型id\e[0m";;
esac
脚本执行效果
[root@localhost ~]# /bin/bash drawn_graph.sh
---------------查看可以绘制的图形---------------1: 三角形 2: 梯形
-------------------------------------------
> 请输入要查看的资源信息类型: 1
> 请输入三角形绘制的层数: 5** ** * ** * * *
* * * * *
[root@localhost ~]# /bin/bash drawn_graph.sh
---------------查看可以绘制的图形---------------1: 三角形 2: 梯形
-------------------------------------------
> 请输入要查看的资源信息类型: 2
> 请输入梯形绘制的层数: 5********************************
*************
小结