F5周/月巡检脚本

一般F5(LTM)的巡检内容包括收集当前的ucs配置备份、收集qkview自检包、日志打包,记录当前node、pool、vs的总数量、可用数量、异常数量、为知数量等等。

由于F5的底层Linux做了很多的限制,所以获取F5的很多信息只能通过snmp来实现,请保证F5的snmp使用的是v2c版本,团体名可以自行修改变量,允许127.0.0.1访问。

#!/bin/bash

function line()
{
    cols=`tput cols`
    
    for l in `seq 1 ${cols}`
    do
    echo -n "="
    done
}

function define()
{
    user=`whoami`
    hostname=`uname -n`
    path=/tmp/inspection/
    public="public"
    datestamp=`date +%Y%m%d`
    timestamp=`date +%H%M%S`
    platform=`tmsh show sys hardware | egrep -A1 Platform | awk ‘NR==2{print $2,$3}‘`
    sn=`tmsh show sys hardware | grep "Chassis Serial" | awk ‘{print $3}‘`
    version=`tmsh show sys version | grep -E "  Version" | awk ‘{print $2}‘`
    uptime=`/usr/bin/uptime | awk -F ‘[,| ]+‘ ‘{print $4,$5,$6}‘`
}

function check()
{
    if [ $user != "root" ]
    then
        echo "Please use root user ."
        exit 1
    fi
    
    if [ ! -d $path ]
    then
        mkdir -p $path
    fi
}

function select_version()
{
    bigpipe version > /dev/null 2>&1
    
    if [ $? != 0 ]
    then
        version11
    else
        version10
    fi
}

function version10()
{
    fstime=`bigpipe failover show | awk ‘{print $4,$5}‘`
    
    snmp_check_version10
    snmp
    
    tar zcf ${path}log_${hostname}_${datestamp}.tar.gz /var/log/* >/dev/null 2>&1
    tmsh save sys ucs /var/local/ucs/ucs_${hostname}_${datestamp}.ucs >/dev/null 2>&1
    cp /var/local/ucs/ucs_${hostname}_${datestamp}.ucs $path
    qkview > /dev/null 2>&1
    mv /var/tmp/${hostname}.tgz $path
    
    logfilt
    output
    backup
}

function version11()
{
    fstime=`tmsh show sys failover | awk ‘{print $4,$5}‘`
    
    snmp_check_version11
    snmp
    tar zcf ${path}log_${hostname}_${datestamp}.tar.gz /var/log/* >/dev/null 2>&1
    tmsh save sys ucs /var/local/ucs/ucs_${hostname}_${datestamp}.ucs >/dev/null 2>&1
    cp /var/local/ucs/ucs_${hostname}_${datestamp}.ucs $path
    qkview > /dev/null 2>&1
    mv /var/tmp/${hostname}.qkview $path
    
    logfilt
    output
    backup
}

function snmp_check_version10()
{
    numstart=`awk ‘/^snmpd {$/{print NR}‘ /config/bigip_sys.conf`
    numstop=`awk ‘/^sshd {$/{print NR}‘ /config/bigip_sys.conf`
    numend=`echo | awk  "{print ${numstop}-1}"`
    numcheck=`sed -n "${numstart},${numend}p" /config/bigip_sys.conf | grep -E "127.0.0.1|0.0.0.0/0.0.0.0" | wc -l`
    
    if [ $numcheck = 0 ]
    then
        echo "Please allow 127.0.0.1 snmp ."
        exit 2
    fi
}

function snmp_check_version11()
{
    numstart=`awk ‘/^sys snmp {$/{print NR}‘ /config/bigip_base.conf`
    numstop=`awk ‘/^    communities {$/{print NR}‘ /config/bigip_base.conf`
    numend=`echo | awk "{print ${numstop}-1}"`
    numcheck=`sed -n "${numstart},${numend}p" /config/bigip_base.conf | grep -E " 127. |0.0.0.0/0.0.0.0" | wc -l`
    
    if [ $numcheck = 0 ]
    then
        echo "Please allow 127.0.0.1 snmp ."
        exit 2
    fi
}

function snmp()
{
    vs_red=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "red"`
    vs_green=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "green"`
    vs_blue=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "blue"`
    vs_total=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "F5-BIGIP-LOCAL-MIB"`
    vs_yellow=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "yellow"`
    pool_green=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "green"`
    pool_blue=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "blue"`
    pool_red=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "red"`
    pool_yellow=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "yellow"`
    pool_total=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "F5-BIGIP-LOCAL-MIB"`
    node_blue=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "blue"`
    node_green=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "green"`
    node_red=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "red"`
    node_yellow=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "yellow"`
    node_total=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "F5-BIGIP-LOCAL-MIB"`
}

function logfilt()
{
    gunzip -c /var/log/ltm.{30..1}.gz > ${path}log.tmp > /dev/null 2>&1
    cat /var/log/ltm >>  ${path}log.tmp
    grep -E "err|crit|alert|emery" ${path}log.tmp > ${path}logfilt.log
    numerr=`cat ${path}logfilt.log | wc -l`
}

function output()
{
    line > ${path}inspection.log
    echo -e "Date:\t\t${datestamp} ${timestamp}" >> ${path}inspection.log
    echo -e "Hostname:\t${hostname}" >> ${path}inspection.log
    echo -e "Platform:\t${platform}" >> ${path}inspection.log
    echo -e "Serial Number:\t${sn}" >> ${path}inspection.log
    echo -e "Version:\t${version}" >> ${path}inspection.log
    echo -e "Run time:\t${uptime}" >> ${path}inspection.log
    echo "" >> ${path}inspection.log
    echo -e "Virtual Server Status:\ttotal ${vs_total}\t\tAvailable ${vs_green}\t\tUnavailable ${vs_yellow}\t\tOffine ${vs_red}\t\tUNknow ${vs_blue}" >> ${path}inspection.log
    echo -e "Pool Status:\t\ttotal ${pool_total}\t\tAvailable ${pool_green}\t\tUnavailable ${pool_yellow}\t\tOffine ${pool_red}\t\tUNknow ${pool_blue}" >> ${path}inspection.log
    echo -e "Node Status:\t\ttotal ${node_total}\t\tAvailable ${node_green}\t\tUnavailable ${node_yellow}\t\tOffine ${node_red}\t\tUNknow ${node_blue}" >> ${path}inspection.log
    echo "" >> ${path}inspection.log
    echo -e "The recent failover time :\t${fstime}" >> ${path}inspection.log
    echo -e "The err log number :\t\t${numerr}" >> ${path}inspection.log
    line >> ${path}inspection.log
}

function backup()
{
    tar zcf ${path}inspection_backup_${datestamp}_${timestamp}.tar.gz `find ${path} -type f` > /dev/null 2>&1
    find $path -type f ! -name "inspection.log" ! -name "inspection_backup_${datestamp}_${timestamp}.tar.gz" ! -name "$0" | xargs rm -f {}
}

function main()
{
    define
    check
    select_version
}
main
时间: 2024-08-04 17:18:14

F5周/月巡检脚本的相关文章

系统巡检脚本

工作需要开发的系统巡检脚本,适用于 CentOS6.x/7.x 拿出来给分享给大家,部分代码用来生成CMDB的报表数据,不喜的可以拿掉. 注意:巡检不能替代监控! 流程图 画图工具:https://www.processon.com/i/5741b4ade4b09daf02b63286 脚本代码 #!/bin/bash #主机信息每日巡检 #version 2016.08.09 #当前脚本适用于CentOS/RedHat 6.X.7.X #环境变量PATH没设好,在cron里执行时有很多命令会找

Flex自定义组件开发之日周月日期选择日历控件

原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的任一位置单击时,将弹出一个 DateChooser 控件,显示当月的所有日期.如果未选择日期,则该文本字段为空白,并且 DateChooser 控件中将显示当前日期的月份.当 DateChooser 控件处于打开状态时,用户可以在各个月份和年份之间滚动,并选择某个日期.选择日期后,DateChooser 控件关闭,

MySql按周/月/日分组统计数据的方法

知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(create_time,'%Y%m') month

Linux/hp unix/AIX日常巡检脚本(转)

以下为Linux/hp unix/AIX日常巡检脚本,大家可以参考着进行改写,用于自己的服务器. #!/usr/bin/ksh syserrdate=`date +"%m/%d"`errcount=0STATUS=HOSTS=`hostname`SCRIPT=`basename $0`REPORT="/tmp/report.txt" #FS percentFILESYSTEM_CHECK() {FS=`df -k|sed '1d'|awk 'sub("%&

周(月)总结 ------------ 5月10日,祝全天下母亲母亲节快乐。

好吧. 让我们谈点正(che)经(dan)的事. 细数一数这周(月)都干了点啥. 5月1~3 首先,颓了一整个五一,今天去那个亲戚明天看这个的- -.整个五一就是颓过去了,五一的那个ch的比赛被虐的跟狗一样,递推都想不到,鬼知道当时自己中什么邪了. Conclude:在家的效率低的不行,这点已经注意了!= = 5月4~10 咳,这一周,个人评价60分吧,具体为什么呢,这一周的状态的确比以前好多了,不过在面对一些傻题的时候做不到1A,代码准确度不够,(不过现在好多了),尤其是面对傻题却想不到,这简

获得自然日周月时间

1.以下函数都可以直接使用. function getReportDates($periods){ $dates = array(); //当前时间周期的起止时间 $end = getWeekendByDate($periods); $start = date("Y-m-d",strtotime("-".($periods-1). "day",strtotime($end))); //获取日期($times个周期) $dates['start']

MySql 按周/月/日统计数据的方法

知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(create_time,'%Y%m') month

按天周月统计数据

 MySql按周,按月,按日分组统计数据 2011-09-07 10:46:00 标签:MySql 数据库 按周月日分组 统计数据 休闲 知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count fro

实战:oracle巡检脚本v1

/************************************************************************************************************************* 该脚本仅仅是为了工作方便书写,主要是在shell里整合了OS的系统命令和oracle的常见巡检脚本; 脚本执行过程中需要调用OS的系统命令的权限,如果执行脚本的用户是普通账户需要考虑权限设置的问题! ***************************