【2018.07.16學習筆記】【linux高級知識 20.16-20.19】

20.16/20.17 shell中的函數

函數就是把一段代碼整理到一個小單元中,起一個函數名字表明這一段代碼。python

當引用到這段代碼,直接調用函數名便可。shell

格式: function 函數名() { //function能夠省略不寫 。函數必須放在最前面,在調用函數的前面 語句代碼 }數組

示例:fun1.shbash

#!/bin/bash
input() {
   
     echo $1 $2 $0 $#  // 函數體內的$1等:表明的是函數的參數
}
input 1 a b   //調用函數,並附上3個參數

##運行結果
1 a input 3    //$一、$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
相關文章
相關標籤/搜索