1.1.2 综合案例
学习目标
这一节,我们从 信息收集、其他实践、小结 三个方面来学习。
信息收集
案例需求
根据提示信息,选择输出 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" ]
then
echo -e "\e[31m\t系统CPU负载信息\e[0m"
echo -e "\e[32m================================"
for index in ${!cpu_attribute[@]}
do
echo "CPU ${cpu_attribute[$index]} min平均负载为: ${cpu_load[$index]}"
done
echo -e "================================\e[0m"
elif [ ${resource_type[$resource_id-1]} == "MEM" ]
then
echo -e "\e[31m\t系统内存负载信息\e[0m"
echo -e "\e[32m================================"
for index in ${!free_attribute[@]}
do
echo "内存 ${free_attribute[$index]} 信息为: ${free_info[$index]} M"
done
echo -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.com
graph_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]);do
echo -n " "
done
# 定制打印三角形核心部分
for j in $(seq $i);do
echo -n "* "
done
# 打印完每行就换行
echo
done;;
"梯形")
read -p "> 请输入梯形绘制的层数: " layer_num
# 定制打印n层的梯形
print_num=${layer_num}
for i in $(seq 1 ${layer_num});do
# 定制打印梯形左侧的空格效果
for m in $(seq $[${layer_num}-$i]);do
echo -n " "
done
# 定制打印梯形核心部分
for j in $(seq $[$print_num]);do
echo -n "*"
done
let print_num+=2
echo
done;;
*)
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
*****
*******
*********
***********
*************
小结