批量統計磁盤使用率--pssh&awk

一、註釋
1、pssh -P 打印輸出,-h遠程主機列表;
2、${a//-/} 變量子串,替換所有-爲空,即刪除;
3、BEGIN/END:awk特殊模式,本文用來打印菜單&獲取循環結果;
4、awk數組:與shell不同,下標不侷限爲數字;
5、sub:awk內置函數,替換字符串內容,本文用來刪除IP地址後冒號;
6、printf:格式化輸出
7、區分開pattern {action}
二、代碼及函數註釋

#!/bin/bash
#2018-09-24磁盤統計##
a=$(date "+%F")
#1、獲取主機磁盤信息,追加到以當前時間命名的log文件
log_file() {
/usr/local/bin/pssh -Ph pssh.txt "df -h |awk '/data/' " >data${a//-/}.log
/usr/local/bin/pssh -Ph pssh.txt "df -h |awk '/var/' " >>var${a//-/}.log
}
log_file

#2、過濾nfs磁盤使用率,並統計被多少主機掛載
nfs_data() {
/usr/bin/awk 'BEGIN{ printf "num\tFilesystem\t\t\tUse%\n"}'
/usr/bin/awk '$7~/data/{b[$2"\t"$6]++}END{for(i in b){printf "%-d\t%-10s\n",b[i],i}}' data${a//-/}.log |sort -rn -k3
}
nfs_data

echo "==========disk >70=============="

#3、打印nfs、var磁盤使用率超過70%的主機信息並排序
data_var() {
/usr/bin/awk  'BEGIN{printf "IP\t\tUse%\t      Mounted\n"}'
/usr/bin/awk  '{FS="[ %]+";if($6+0>0 && $6>70){sub(":","",$1);printf "%-10s\t%-10s\t%-10s\n",$1,$6"%",$7}}' data${a//-/}.log |sort -rn -k2
/usr/bin/awk  '{FS="[ %]+";if($6+0>0 && $6>70){sub(":","",$1);printf "%-10s\t%-10s\t%-10s\n",$1,$6"%",$7}}' var${a//-/}.log |sort -rn -k2
}
data_var

#刪除log
mv data${a//-/}.log /dev/null
mv var${a//-/}.log /dev/null

三、awk代碼縮進(裝x版)

#!/bin/bash
#2018-09-24磁盤統計##
a=$(date "+%F")

log_file() {
/usr/local/bin/pssh -Ph pssh.txt "df -h |awk '/data/' " >data${a//-/}.log
/usr/local/bin/pssh -Ph pssh.txt "df -h |awk '/var/' " >>var${a//-/}.log
}
log_file
nfs_data() {
/usr/bin/awk 'BEGIN{
                printf "num\tFilesystem\t\t\tUse%\n"
                }'
/usr/bin/awk '
                $7~/data/{
                                b[$2"\t"$6]++
                        }
                                END{
                                        for(i in b){
                                                        printf "%-d\t%-10s\n",b[i],i
                                                        }
                                        }' data${a//-/}.log |sort -rn -k3
}
nfs_data
echo "==========disk >50=============="
data_var() {
/usr/bin/awk  'BEGIN{
                printf "IP\t\tUse%\t      Mounted\n"
                }'
/usr/bin/awk  '{
                        FS="[ %]+";if($6+0>0 && $6>50){
                                        sub(":","",$1);printf "%-10s\t%-10s\t%-10s\n",$1,$6"%",$7
                                                        }
                }' data${a//-/}.log |sort -rn -k2

/usr/bin/awk  '{
                        FS="[ %]+";if($6+0>0 && $6>50){
                                sub(":","",$1);printf "%-10s\t%-10s\t%-10s\n",$1,$6"%",$7
                                                                }
               }' var${a//-/}.log |sort -rn -k2
}
data_var
mv data${a//-/}.log /dev/null
mv var${a//-/}.log /dev/null
																							2018-09-27
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章