设为首页 收藏本站
查看: 507|回复: 0

[经验分享] 收集Linux机器信息。

[复制链接]

尚未签到

发表于 2018-5-18 11:06:51 | 显示全部楼层 |阅读模式
#!/bin/bash
#=======================================================================================
#               FILE:    Report.sh
#              USAGE:    bash Report.sh
#        DESCRIPTION:    Copy bash style guide and coding standard .
#                        The default copy example is the current text .
#                        Dont.t find text on other directories .
#            OPTIONS:    see fuction 'usage' below
#       REQUIREMENTS:    ---
#               BUGS:    ---
#              NOTES:    ---
#             AUTHOR:    Dr.-Vision. Simple(sp).
#            COMPANY:    China
#            VERSION:    1.0
#            CREATED:    01.22.2016 - 13:15:30
#           REVISION:    01.23.2016
#            PROJECT:    XXX
#          COPYRITHT:    Copyright(c)2002-2020 Shell, All Rights Reserved
#=======================================================================================
#If required, additional information has to be added (e.g copyright note,project assignment).
HOST=`hostname`
TODAY=`date +%Y-%m-%d`
#DATE_TIME=``
#DETECT_PATH="/var/log/xxx"
#DETECT_LIST="detect.log detectorigin.log digRun.log"
#FC_CACHE_LOG="xxx.log.01012093SV.CHN-GX-9-3SV.20160126201857.gz"
#DATA_FILE="${DATA_PATH}/detectorigin.log"
#DATA=`awk '!a[$2]++' ${DATA_FILE}|grep -E "No_Detect|ip_bad|ip_down"|awk '{print $2"\t"$4}'`
#DATA=`awk '!a[$2]++' ${DATA_FILE}|grep -v "200"|awk '{print $2"\t"$4}'`
#DATA_LOG=`awk '!a[$2]++' ${DATA_FILE}|grep -E "No_Detect|ip_bad|ip_down"|awk '{print $2}'`
#echo -e "${DATA}"|awk '{printf("domain=%s; code=%s",$1,$2)}'
#echo $domain $code
DOMAIN_PATH="/usr/local/squid/etc"
DOMAIN_FILE="${DOMAIN_PATH}/domain.conf"
TODAY="`date +%Y-%m-%d`"
LOG_FILE="/tmp/$0_${TODAY}.log"
DOMAIN="`cat -An /usr/local/squid/etc/domain.conf|awk '{print $1,$2,$12}'`"
#RCMS INFO
NAMEID="http://ad.41.cn"
NODE="SH"
# Disk Used
CCM="`df -Th|sed '1d;/ /!N;s/\n//;s/ \+/ /;'|nl|awk '{print $1}'`"
DATA="`df -Th|sed '1d;/ /!N;s/\n//;s/ \+/ /;'|nl`"
USED="85"
USED="5"
IOWAIT="300"
IOWAIT="0.1"
#Disk Write IO
WDDATA="`iostat -x |sed -e '1,5d'|nl|sed '1d;/ /!N;s/\n//;s/ \+/ /;'|awk '{print $1}'`"
WDWAIT="`iostat -x |sed -e '1,5d'|nl|sed '1d;/ /!N;s/\n//;s/ \+/ /;'`"
#
DOMAIN="www.xxx.com"
COUNT="3"
#   Function comments
#===   FUNCTION     ====================================================================
#          NAME:    Record Info.      
#   DESCRIPTION:    Record Sth Info.
#  PARAMETER  1:    ---
#=======================================================================================
function Record_Login_Ping {
    printf "\e[32m ############# 正在生成将要登录设备是否可用的报告 ##############\e[0m\n" ${USED}>>${LOG_FILE}
    DEVICE_INFO=`curl ${RCMSAPI_URL}`
    printf "%s\n" ${DEVICE_INFO}
}
function Record_Disk_Used {
    printf "\e[32m ############# 正在生成硬盘使用超过%%%s的报告 ##############\e[0m\n" ${USED}>>${LOG_FILE}
    printf "\e[32m ############# 正在生成硬盘使用超过%%%s的报告 ##############\e[0m\n" ${USED}
for id in ${CCM}
do
    eval `echo -e "${DATA}"|awk -vid=$id '{if($1==id) print "name="$2";type="$3";size="$4";used="$5";avail="$6";use="$7";dmount="$8}'`
    if [[ "$id" == "" ]];then
        echo "$id is null,check Failed"
        exit 1
    fi
    disk_used=$(echo "${use}"|awk -F% '{if($1>'$USED')print $1}')
    if [[ "${disk_used}" != "" ]];then
        printf "\e[31m ID:%s \t \e[0m\tUsed:%s \t \e[0m Mount:\e[33m %s\e[0m\n" $id ${use} ${dmount} >>${LOG_FILE}
        printf "\e[31m ID:%s \t \e[0m\tUsed:%s \t \e[0m Mount:\e[33m %s\e[0m\n" $id ${use} ${dmount}
    fi
done
}
function Record_Disk_IO {
    printf "\e[32m ############# 正在生成硬盘写延时报告 ##############\e[0m\n" >>${LOG_FILE}
    printf "\e[32m ############# 正在生成硬盘写延时报告 ##############\e[0m\n"
for id in ${WDDATA}
do
     eval `echo -e "${WDWAIT}"|awk -vid="${id}" '{if($1==id) printf("device=%s;rrqm=%s;wrqm=%s;rs=%s;ws=%s;\
rsecs=%s;wsecs=%s;avgrqsz=%s;svqqusz=%s;await=%s;svctm=%s;util=%s;",$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13)}'`
if [[ "$id" == "" ]];then
        echo "$id is null,check Failed"
        exit 1
fi
#echo "device=$device rrqm=$rrqm wrqm=$wrqm rs=$rs ws=$ws rsecs=$rsecs wsecs=%s avgrqsz=$avgrqsz \
#svqqusz=$svqqusz await=$await svctm=$svctm util=$util"
wio_wait=$(echo "${await}"|awk '{if($1>'$IOWAIT')print $1}')
if [[ "${wio_wait}" != "" ]];then
printf "\e[31m ID:%s \t \e[0m\tDevice Name:\e[33m%s \t \e[0m Write_IO_Wait(ms):\e[33m %s\e[0m\n" $id ${device} ${wio_wait} >>${LOG_FILE}
printf "\e[31m ID:%s \t \e[0m\tDevice Name:\e[33m%s \t \e[0m Write_IO_Wait(ms):\e[33m %s\e[0m\n" $id ${device} ${wio_wait}
fi
done
}
function Record_Ping_Time {
    printf "\e[32m ############# 正在%s到Cache的延时报告 ##############\e[0m\n" ${HOST}>>${LOG_FILE}
    printf "\e[32m ############# 正在%s到Cache的延时报告 ##############\e[0m\n" ${HOST}
    data=`ping ${DOMAIN} -c ${COUNT}`
    echo "${data}"|tail -n 2
    echo "${data}"|tail -n 2 >>"${LOG_FILE}"
}
function Record_Log {
    printf "################ Start #############\n">${LOG_FILE}
    printf "Domain\tStatus\tURL\t\n">>${LOG_FILE}
    for domain in `echo "${DATA_LOG}"`
    do
        #echo "$domain"
        eval `echo -e "${DATA}"|awk -vdomain="${domain}" '{if($1==domain) printf("domain=%s;code=%s",$1,$2)}'`
        #echo "$domain $code"
        #eval `awk -vdomain="${domain}" '{if($1==domain) printf("domain=%s;url=%s",$1,$11)}' ${DOMAIN_FILE}`
        url=$(echo -e `echo -e "$DOMAIN"|grep ${domain}`|awk -F":" '{print $2}')
        echo "DOMAIN=$domain\tCode=${code}\tURL=`echo $url|awk -F":" "{print $2}"`"
        # awk -vdomain="${domain}" '{if($1==domain) printf "url=%s",$11}' "${DOMAIN_FILE}"
        echo -e "${domain}\t${code}\t${url}">>${LOG_FILE}
    done
    printf "################ End #############\n">>${LOG_FILE}
    printf "\e[32m ################ Parse Log Finished #############\e[0m\n"
    printf "\e[32m 探测结果保存路径:Detect File:${LOG_FILE} \e[0m\n"
}
#   Section comments
#---------------------------------------------------------------------------------------
#   Define Shell Main .
#---------------------------------------------------------------------------------------
#Record_Disk_Used
#Record_Ping_Time
#Record_Upper_Time
#Record_Disk_IO
#Record_Login_Ping
#if [[ -f ${DATA_FILE} ]];then
#   Record_Log
#else
#       printf "\e[32m ################ Parse Log [ Failed ]##############\e[0m\n">>${LOG_FILE}
#       printf "\e[32m ################ Parse Log [ Failed ]##############\e[0m\n"
#       exit 1
#fi
#   line end comments

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461644-1-1.html 上篇帖子: 【重点】Linux 目录结构 下篇帖子: linux R离线安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表