一、註釋
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