秒殺資源統計任務---AIX信息收集器





傳統的系統資源統計任務大抵是這樣的:先登錄主機,然後跑一堆命令,再把輸出複製黏貼到Excel表格,周而復始,直到遍歷所有主機,這通常無趣得很,爲什麼不使用更簡單的方式呢?自動收集,自動生成Excel表格,何樂而不爲?也許SA去泡杯咖啡的功夫Excel就已經生成了,SA要做的僅僅是把生成的Excel表從Server端拉下來而已~



當前1.0版本已實現的功能:


1.CPU數量統計

2.物理內存統計

3.系統版本獲取

4.交換空間統計

5.IP統計

6.網卡信息及位置統計

7.光纖卡信息及位置統計

8.光纖卡WWN號統計



不多說,先來看下效果:


首先是分發收集器和上傳工具到所有主機:


095847707.jpg


100345500.jpg


然後執行收集器:


100822418.jpg


收集器會把收集到的信息都上傳到一臺特定主機


101039747.jpg


在這臺主機上彙總信息


$ cat *.csv >> AIXInfo.csv


接着下載該文件


101524230.jpg


最終效果


101745881.jpg


還算滿意嗎?



給出代碼:


1.Collect_AIXInfo.sh


#!/usr/bin/ksh
# Version 1.0
# AUTHOR:       Xin23   http://weibo.com/231988
#獲取CPU信息
Get_CPUinfo(){
        prtconf | grep 'Number Of Processors:' | awk '{print $4}'
}
#獲取內存信息
Get_MEMinfo(){
        prtconf -m | awk '{print $3}'
}
#獲取網卡信息
Get_NICinfo(){
        lscfg -vp | grep ent[[:digit:]] | awk '{print " " $1 "," $2 " "}'
}
#獲取光纖卡信息
Get_FCinfo(){
        lscfg -vp | grep fcs[[:digit:]] | awk '{print " " $1 "," $2 " "}'
}
#獲取交換空間信息
Get_SWAPinfo(){
        lsps -s | tail -1 | awk '{print $1}'
}
#獲取IP信息
Get_IPinfo(){
        ifconfig -a | grep -w inet | grep -v 127.0.0.1 | sed 's/.*inet //g' | sed 's/ netmask.*$//g' | xargs | tr ' ' \/
}
#獲取WWN號
Get_WWNinfo(){
        lscfg -vpl fcs* | grep 'Network Address' | sed 's/.*Network Address\.*//g'
}
Print_Major(){
        echo "$(hostname),$(oslevel -s),$(Get_CPUinfo),$(Get_MEMinfo),$(Get_SWAPinfo),$(Get_IPinfo)"
}
Print_Split_5(){
        i=1
        while [[ $i -le $1 ]];do
                printf " , , , , , \n" >> $2
                i=$(($i+1))
        done
}
Print_Split_1(){
        i=1
        while [[ $i -le $1 ]];do
                printf " , \n" >> $2
                i=$(($i+1))
        done
}
cd /tmp
FCNUMBER=$(Get_FCinfo | wc -l)
NICNUMBER=$(Get_NICinfo | wc -l)
if [ "$FCNUMBER" -gt "$NICNUMBER" ]
        then ROWNUMBER=$FCNUMBER;
else    ROWNUMBER=$NICNUMBER;
fi
x=$(($ROWNUMBER-1))
Print_Major > MajorInfo.tmp.csv
Print_Split_5 $x MajorInfo.tmp.csv
Get_NICinfo > NICInfo.tmp.csv
Get_FCinfo > FCInfo.tmp.csv
Get_WWNinfo > WWNInfo.tmp.csv
if [ "$FCNUMBER" -gt "$NICNUMBER" ]
        then Print_Split_1 $(($FCNUMBER-$NICNUMBER)) NICInfo.tmp.csv
fi
paste -d , MajorInfo.tmp.csv NICInfo.tmp.csv FCInfo.tmp.csv WWNInfo.tmp.csv > $(hostname).csv
HOSTNAME=$(hostname)
#調用工具上傳到特定主機
/tmp/scp.sh $HOSTNAME



2.上傳工具/tmp/scp.sh


#!/usr/bin/expect
# Version 1.0
# AUTHOR:       Xin23   http://weibo.com/231988
set timeout 3
set IP 10.232.128.117
set USER u25151
set PASSWORD xxx
set HOSTNAME [lindex $argv 0]
spawn scp /tmp/$HOSTNAME.csv $USER@$IP:/tmp/log
expect {
                "(yes/no)?" {send "yes\r"}
                "*assword:" {send "$PASSWORD\r"}
}
expect {
                "$" {send "\r"}
                "*assword:" {send "$PASSWORD\r"}
        }
exit



3.調用分發工具腳本loadupload.sh


#!/usr/bin/ksh
# Version 1.0
# AUTHOR:       Xin23   http://weibo.com/231988
while read IP
do
        /home/u25151/upload.sh $IP
done</home/u25151/ip_list
#ip_list爲IP列表



4.分發工具upload.sh


#!/usr/bin/expect
# Version 1.0
# AUTHOR:       Xin23   http://weibo.com/231988
set timeout 3
set USER u25151
set PASSWORD xxx
set IP [lindex $argv 0]
spawn scp /tmp/scp.sh $USER@$IP:/tmp
expect {
                "(yes/no)?" {send "yes\r"}
                "*assword:" {send "$PASSWORD\r"}
}
expect {
                "$" {send "\r"}
                "*assword:" {send "$PASSWORD\r"}
        }
exit



5.發佈執行命令腳本


#!/usr/bin/expect
# Version 1.0
# AUTHOR:       Xin23   http://weibo.com/231988
set timeout 3
set USER u25151
set PASSWORD xxx
set IP [lindex $argv 0]
spawn ssh $USER@$IP /home/u25151/Collect_AIXInfo.sh
expect {
                "(yes/no)?" {send "yes\r"}
                "*assword:" {send "$PASSWORD\r"}
}
expect {
                "$" {send "\r"}
                "*assword:" {send "$PASSWORD\r"}
        }
exit




THE END




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章