【2018.07.16学习笔记】【linux高级知识 20.16-20.19】

本文介绍Shell脚本中的函数与数组应用技巧,包括函数定义、调用及数组操作等。同时,探讨了如何利用Shell脚本建立告警系统,涉及脚本架构、监控脚本、邮件发送等功能。

20.16/20.17 shell中的函数

函数就是把一段代码整理到一个小单元中,起一个函数名字代表这一段代码。

当引用到这段代码,直接调用函数名即可。

格式: function 函数名() { //function可以省略不写 。函数必须放在最前面,在调用函数的前面 语句代码 }

示例:fun1.sh

#!/bin/bash
input() {
   
     echo $1 $2 $0 $#  // 函数体内的$1等:代表的是函数的参数
}
input 1 a b   //调用函数,并附上3个参数

##运行结果
1 a input 3    //$1、$2是函数的第一第二个参数,$0是函数名,$#是函数参数个数

示例:

#!/bin/bash
input() {
   
     echo $1 $2 $0 $#  // 函数体内的$1等:代表的是函数的参数
}
input $1 $2 $3   //不在函数体内的$1等,代表是脚本自己的参数。执行脚本时对脚本要赋值参数:fun1.sh 15 a b

##执行 fun1.sh 15 a b,执行结果是
15 a input 3    //

示例:

#!/bin/bash
sum(){

   s=$[$1+$2]
   echo $s
}
sum 1 2

##运行结果
3

示例:

#!/bin/bash
ip(){
   ifconfig |grep -A1 "$1 "|tail -1 |awk '{print $2}'|awk -F ':' '{print $2}'
}
read -p "please input the eth name: " e   //输入网卡的名字
myip='ip $e'      //显示网卡ip
echo "$e address is $myip"

20.18 shell中的数组

一串数字或一串字符串的形式,形成一个变量

定义数组:

a=(1 2 3 4 5 6)
echo ${a[@]} //@、*都可以打印数组所有元素

取数组的元素:

echo ${a[2]}  //数组第三个元素,从0算起:a[0] a[1] a[2]
echo ${#a[@]}  //数组的元素个数

数组元素赋值、覆盖

a[1]=100
echo ${a[@]}

a[5]=2
echo ${a[@]} //如果下标不存在,则自动添加一个元素

删除数组:

unset a
unset a[1]

数组分片:截取某几个元素

a=('seq 1 10')
echo ${a[@]:0:3}  //从第1个元素开始,取3个元素
echo ${a[@]:1:4}  //从第2个元素开始,取4个元素
echo ${a[@]:0-3:2}  //从倒数第3个元素开始,取2个元素

数组替换

echo ${a[@]/3/100}  
a=(${a[@]/3/100})

20.19 告警系统需求分析

作为一个shell项目,告警系统是zabbix外的一个定制化需求

需求:使用shell定制各种个性化的告警工具,需要统一化管理、规范化

思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、日志系统等

主程序:整个脚本的入口,整个系统的命脉
配置文件:控制中心,来开关各个子程序,指定各个相关联的日志文件
子程序:才是真正的监控脚本,监控各项指标
邮件引擎:由python程序实现,定义发邮件的服务器,发件人,密码等。
日志文件:整个监控系统要有日志输出到日志文件里

要求:被监控的机器角色多种多样,所有机器上部署一样的监控系统,不管什么机器整个监控程序的框架是一致的,不同角色定制不同的配置文件

程序架构:

主目录mon:包含子目录bin、conf、shares、mail、log
子目录bin:主程序脚本 main.sh
子目录conf:配置文件 mon.conf
子目录shares:监控子脚本 load.sh 502.sh
子目录mail:邮件引擎文件 mail.py mail.sh
子目录log:日志文件 mon.log err.log

转载于:https://my.oschina.net/u/3804114/blog/1855063

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值