傳統的系統資源統計任務大抵是這樣的:先登錄主機,然後跑一堆命令,再把輸出複製黏貼到Excel表格,周而復始,直到遍歷所有主機,這通常無趣得很,爲什麼不使用更簡單的方式呢?自動收集,自動生成Excel表格,何樂而不爲?也許SA去泡杯咖啡的功夫Excel就已經生成了,SA要做的僅僅是把生成的Excel表從Server端拉下來而已~
當前1.0版本已實現的功能:
1.CPU數量統計
2.物理內存統計
3.系統版本獲取
4.交換空間統計
5.IP統計
6.網卡信息及位置統計
7.光纖卡信息及位置統計
8.光纖卡WWN號統計
不多說,先來看下效果:
首先是分發收集器和上傳工具到所有主機:
然後執行收集器:
收集器會把收集到的信息都上傳到一臺特定主機
在這臺主機上彙總信息
$ cat *.csv >> AIXInfo.csv
接着下載該文件
最終效果
還算滿意嗎?
給出代碼:
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