1、shell 中的函數python
一、函數的概念:函數就是把一段代碼整理到一個小單元中,並給這個小單元命名,當用到這段代碼時直接調用小單元的名字便可。shell
二、格式:function f_name() {數組
commandbash
}服務器
函數必須放在最前面函數
三、案例工具
#!/bin/bash
function inp(){
echo $1 $2 $3 $0 $# #$1 ,$2,$3 分別表明 a b c,$0表明腳本本身,$#表明有幾個參數
}
inp a b c日誌
[root@localhost ~]# sh func.sh
a b c func.sh 3blog
這個腳本也能夠寫成這樣ip
#!/bin/bash
function inp(){
echo "the first par is $1"
echo "the second par is $2"
echo "the third par is $3"
echo "the scritp name is $0"
echo "the number of par is $#"
}
inp $1 $2 $3
[root@localhost ~]# sh func.sh 1 #只顯示已輸入的參數,沒顯示不輸出。
the first par is 1
the second par is
the third par is
the scritp name is func.sh
the number of par is 1
四、案例2 調用sum函數計算1+10的和
#!/bin/bash
sum() {
s=$[$1+$2]
echo $s
}
sum 1 10
[root@localhost ~]# sh -x func1.sh
+ sum 1 10
+ s=11
+ echo 11
11
五、案例3 獲取IP
#!/bin/bash
ip()
{
ifconfig |grep -A1 "$1: " |awk '/inet/ {print $2}' #獲取網卡的IP
}
read -p "please input the eth name: " eth
ip $eth
[root@localhost ~]# sh -x func2.sh
+ read -p 'please input the eth name: ' eth
please input the eth name: ens33
+ ip ens33
+ ifconfig
+ grep -A1 'ens33: '
+ awk '/inet/ {print $2}'
192.168.134.130
[root@localhost ~]# sh -x func2.sh
+ read -p 'please input the eth name: ' eth
please input the eth name: ens37
+ ip ens37
+ ifconfig
+ grep -A1 'ens37: '
+ awk '/inet/ {print $2}'
192.168.150.131
2、shell中的數組
一、數組:一串字符或一組數字或數字與字符組成的集合
二、定義一個數組並顯示
[root@localhost ~]# a=(1 2 3 4 a)
[root@localhost ~]# echo ${a[@]}
1 2 3 4 a
[root@localhost ~]# echo ${a[*]}
1 2 3 4 a
三、顯示數組中的某一個數或字符,下標是從0開始的,0就是第一個數字
[root@localhost ~]# echo ${a[0]}
1
[root@localhost ~]# echo ${a[2]}
3
[root@localhost ~]# echo ${a[3]}
4
四、獲取數組的個數
[root@localhost ~]# echo ${#a[*]}
5
五、數組賦值和替換
[root@localhost ~]# a[6]=h
[root@localhost ~]# echo ${a[*]}
1 2 3 4 a h
[root@localhost ~]# a[3]=k #注意這個地方下標是從0開始
[root@localhost ~]# echo ${a[*]}
1 2 3 k a h
六、數組元素的刪除和數組的刪除
[root@localhost ~]# unset a[2]
[root@localhost ~]# echo ${a[*]}
1 2 k a h
[root@localhost ~]# unset a
[root@localhost ~]# echo ${a[*]}
七、數組分片
[root@localhost ~]# echo ${a[*]} #定義數組a
1 2 3 4 5 6 7 8 9 10
[root@localhost ~]# echo ${a[@]:0:3} #從第一個元素開始,截取3個
1 2 3
[root@localhost ~]# echo ${a[@]:1:4} #從第二個元素開始,截取4個
2 3 4 5
[root@localhost ~]# echo ${a[@]:0-3:2} #從倒數第三個元素開始,截取2個
8 9
八、數組替換
[root@localhost ~]# a=(${a[@]/8/h})
[root@localhost ~]# echo ${a[*]}
1 2 3 4 5 6 7 h 9 10
[root@localhost ~]# echo ${a[@]/6/a}
1 2 3 4 5 a 7 h 9 10
3、告警需求分析
一、需求:使用shell定製各類個性化警告工具,須要統一化,規範化管理。
二、思路:指定一個腳本包,包含主程序,子程序,配置文件,郵件引擎,輸出日誌等。
三、主程序:做爲整個腳本的入口,是整個系統的命脈。
四、配置文件:是一個控制中心,用它來開關各個子程序,指定各個相關連的日誌文件。
五、子程序:真正的監控腳本,用來監控各個指標
六、郵件引擎:由一個python程序實現,定義發郵件的服務器,發件人及發件密碼
七、輸出日誌:整個監控系統要有日誌輸出
bin: 主程序
conf:配置文件
shares:監控腳本
mail:郵件引擎
log:日誌