本地采集
#!/bin/bash
echo -e "\033[34m ----------磁盘(单位:G)---------- \033[0m"
#取df -h的除第一行的所有行第三列的值,只取G|T单位数值
diskinfo1=$(df -h |awk 'NR!=1 {print $3}'|egrep 'G'|sed 's/.$//g'|awk '{sum += $1} END {print sum}')
diskinfo2=$(df -h |awk 'NR!=1 {print $3}'|egrep 'T'|sed 's/.$//g'|awk '{print ($1 * 1024)}'|awk '{sum += $1} END {print sum}')
#echo -e "\033[32m $diskinfo1 \033[0m"
#echo -e "\033[32m $diskinfo2 \033[0m"
diskinfo=$(echo "$diskinfo1 $diskinfo2"|xargs -n 1 |awk '{sum += $1} END {print sum}')
echo -e "\033[32m $diskinfo \033[0m"
echo -e "\033[34m ----------内存(单位:M)---------- \033[0m"
mem=$(free -m|awk 'NR==2 {print$3}')
echo -e "\033[32m $mem \033[0m"
通过已实现免密登录的主机清单进行远程批量采集汇总
#!/bin/bash
#获取信息
#这里的主机都可免密登录,假如不能免密sshpass -p "密码" ssh user@ip可指定密码远程
read -p "请输入采集主机清单文件路径:" fileUrl
HOSTIP=$(
for i in $(cat $fileUrl)
do
echo $i
done
)
HOSTMEM=$(
for i in $(cat $fileUrl)
do
ssh $i "free -m" | awk 'NR==2 {print $3}'
done
)
HOSTDISK=$(
for i in $(cat $fileUrl)
do
diskinfo1=$(ssh $i "df -h" | awk 'NR!=1 {print $3}'|egrep 'G'|sed 's/.$//g'|awk '{sum += $1} END {print sum}')
diskinfo2=$(ssh $i "df -h" |awk 'NR!=1 {print $3}'|egrep 'T'|sed 's/.$//g'|awk '{print ($1 * 1024)}'|awk '{sum += $1} END {print sum}')
echo "$diskinfo1 $diskinfo2"|xargs -n 1 |awk '{sum += $1} END {print sum}'
done
)
#以行的形式追加写入文本
timestamp=`date '+%Y%m%d%H%M'`
echo $HOSTIP >> /tmp/inforc_$timestamp
echo $HOSTMEM >> /tmp/inforc_$timestamp
echo $HOSTDISK >> /tmp/inforc_$timestamp
#如果主机太多,则信息文本中列会太多,不方便阅读,将其列的内容取出来,并以行的形式重新写入文本
L=$(cat $fileUrl|wc -l)
for i in `seq 1 $L`
do
cat /tmp/inforc_$timestamp | awk -v t="$i" '{print $t}' | xargs >> /tmp/info_$timestamp
done
rm -rf /tmp/inforc_$timestamp
memsum=$(cat /tmp/info_$timestamp |awk '{print $2}'|awk '{sum += $1} END {print sum}')
disksum=$(cat /tmp/info_$timestamp |awk '{print $3}'|awk '{sum += $1} END {print sum}')
echo -e "\033[34m总计:\033[0m"
echo -e "\033[34m内存(单位:M):$memsum \033[0m"
echo -e "\033[34m磁盘(单位:G):$disksum \033[0m"
echo -e "\033[34m采集结果文件路径:/tmp/info_$timestamp \033[0m"