shell场景脚本实战一(主控脚本实现)
一、场景介绍
1.场景脚本介绍
shell脚本四大功能:
提取Linux操作系统信息
获取操作系统运行状态
分析应用状态
应用日志分析
2.学习shell意义
1.明白shell在我们的日常工作中能给我们什么帮助
2.系统的明白shell的开发环境和使用特性
3.明白shell对资源监控功能的作用
4.概括总结系统、应用的运维知识
3.Vim编辑器基本设置
意义:友好的设置vim编辑器,能更加方便、快捷的提高shell语言编程效率
设置方式分类:
1.临时设置

2.永久设置(修改/etc/vimrc文件)
vim /etc/vimrv //改变系统下的所有用户的设置


syntax on //语法高亮
set number //显示行号
set autoindent
set cindent //自动缩进
shell高亮显示
基本格式:echo -e 终端颜色 + 显示内容 + 结束后的颜色

设置文件头
执行:sudo vim /etc/vimrc
在末尾添加脚本如下:
" 自动加入文件头
autocmd BufNewFile *.py, *.sh, exec ":call SetTitle()"
" 定义用户名和邮箱号,后面函数可以调用
let $autor_name = "lidongfang"
let $autor_email = "87888@163.com"
" 函数SetTitle
func SetTitle()
if &filetype == 'sh'
call setline(1,"\####################################################")
call append(line("."),"\#File Name: ".expand("%"))
call append(line(".")+1,"\#Autor: ".$autor_name)
call append(line(".")+2,"\#Mail: ".$autor_email)
call append(line(".")+3,"\#Crerat Time: ".strftime("%c"))
call append(line(".")+4,"\======================================== ")
call append(line(".")+5,"\#!/bin/bash")
call append(line(".")+6,"")
else
call setline(1,"\###################################################")
call append(line("."),"\#File Name: ".expand("%"))
call append(line(".")+1,"\#Autor: ".$autor_name)
call append(line(".")+2,"\#Mail: ".$autor_email)
call append(line(".")+3,"\#Crerat Time: ".strftime("%c"))
call append(line(".")+4,"\=========================================== ")
call append(line(".")+5,"\#!/usr/bin/python")
call append(line(".")+6,"")
endif
autocmd BufNewFile * normal G
endfunc

注意:
设置过vimrc文件之后,使用root用户发现创建新文件时候仍然没有头文件的显示。
使用vim命令可以,vi不可以显示。
更改为普通用户后,新建文件vi和vim都显示头文件。(不知道为什么-_-||)
4.场景脚本结构梳理

之后会详细介绍相关脚本。
5.echo高亮输出

echo -e "\e[1;35m Welcome to china~ \e[1;30m"

也可以写为:
echo -e "\e[1;35m" "Welcome to china~" $(tput sgr0)

$(tput sgr0) 这个是使得终端显示的颜色还是黑色。
echo -e "\e[1;35m" "Welcome to china~"
注意:不写闭合颜色的时候,下方的颜色不会闭合。

6.关联数组
关联数组:
普通数组:只能使用整数作为数组的索引
关联数组:可以使用字符串作为数组索引
申明关联数组变量:
declare -A ass_array1
数组名[索引] =变量值
ass_array1[index1]=pear
二、场景控制脚本
1.场景控制脚本主控脚本
1.控制脚本monitor_man.sh
#!/bin/bash
resettem=$(tput sgr0)
declare -A ssharray
i=1
numbers=" "
for script_file in $(ls -I "monitor_man.sh" ./)
do
echo -e "\e[1;35m" "The Script:" ${i} '==>' ${resettem} ${script_file}
i=$((i+1))
done
输出内容:

注意: for script_file in `ls -l "monitor_man.sh" ./`
这里用的不是单引号而是反单引号,键盘上波浪号那个键。
但是我这里输出的内容是:

接着实现把键和值存入关联数组。
ssharray[$i]=${script_file} //把文件名赋值给ssharray
numbers="${numbers} | ${i}" //把id的值复制给numbers
while true
do
read -p "Please input a number [${numbers}]: " shuzi //读取输入的数字
if [[ ! ${shuzi} =~ ^[0-9]+ ]];then //如果输入的不是数字,就终止
exit 0
fi
/bin/sh ./${ssharray[$shuzi]} //如果是数字,就执行对应的脚本
done
主控脚本全部内容:


后续实战文章:
shell实战二(信息系统监控脚本):https://www.jianshu.com/p/0c7f1b523f1f
shell实战三(应用状态分析脚本):https://www.jianshu.com/p/ddccafa07154
shell实战四(日志分析控制脚本):https://www.jianshu.com/p/f213b35083dd