F5獲取vs、pool、member當前、峯值、總計連接數的oid

    以前有的用戶需要對F5上配置的業務進行監控,會索要每個業務甚至於每個節點的一些信息,因爲不同的配置有不同的名稱,所以oid並不是固定的,只要配置名字有變化,oid就會出現變化,現貼出獲取一些oid的方法,以供備用。不喜勿噴。


#!/bin/bash

function define()
{
    user=`whoami`
    path=/tmp/snmp/
    
    vs_curconn_oid_tmp=${path}vs_curconn_oid.tmp
    vs_curconn_name_tmp=${path}vs_curconn_name.tmp
    vs_curconn=${path}vs_curconn.txt
    vs_totconn_oid_tmp=${path}vs_totconn_oid.tmp
    vs_totconn_name_tmp=${path}vs_totconn_name.tmp
    vs_totconn=${path}vs_totconn.txt
    vs_maxconn_oid_tmp=${path}vs_maxconn_oid.tmp
    vs_maxconn_name_tmp=${path}vs_maxconn_name.tmp
    vs_maxconn=${path}vs_maxconn.txt
    
    pool_curconn_oid_tmp=${path}pool_curconn_oid.tmp
    pool_curconn_name_tmp=${path}pool_curconn_name.tmp
    pool_curconn=${path}pool_curconn.txt
    pool_totconn_oid_tmp=${path}pool_totconn_oid.tmp
    pool_totconn_name_tmp=${path}pool_totconn_name.tmp
    pool_totconn=${path}pool_totconn.txt
    pool_maxconn_oid_tmp=${path}pool_maxconn_oid.tmp
    pool_maxconn_name_tmp=${path}pool_maxconn_name.tmp
    pool_maxconn=${path}pool_maxconn.txt
    
    member_curconn_oid_tmp=${path}member_curconn_oid.tmp
    member_curconn_name_tmp=${path}member_curconn_name.tmp
    member_curconn=${path}member_curconn.txt
    member_totconn_oid_tmp=${path}member_totconn_oid.tmp
    member_totconn_name_tmp=${path}member_totconn_name.tmp
    member_totconn=${path}member_totconn.txt
    member_maxconn_oid_tmp=${path}member_maxconn_oid.tmp
    member_maxconn_name_tmp=${path}member_maxconn_name.tmp
    member_maxconn=${path}member_maxconn.txt
}

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

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

function vs_curconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.10.2.3.1.12 > $vs_curconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.10.2.3.1.12 > $vs_curconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval vs_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $vs_curconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval vs_count_name${count}=`echo $line | awk -F '\"' '{print $2}'`
    done < $vs_curconn_name_tmp
    
    line >> $vs_curconn
    echo -e "LTM Virtual Server Client Current Connections" >> $vs_curconn
    echo "" >> $vs_curconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${vs_count_name${i}}" >> $vs_curconn
        echo -en "\t\t" >> $vs_curconn
        eval echo "\${vs_count_oid${i}}" >> $vs_curconn
    done
    
    line >> $vs_curconn
}

function vs_totconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.10.2.3.1.11 > $vs_totconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.10.2.3.1.11 > $vs_totconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval vs_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $vs_totconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval vs_count_name${count}=`echo $line | awk -F '\"' '{print $2}'`
    done < $vs_totconn_name_tmp
    
    line >> $vs_totconn
    echo -e "LTM Virtual Server Client Total Connections" >> $vs_totconn
    echo "" >> $vs_totconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${vs_count_name${i}}" >> $vs_totconn
        echo -en "\t\t" >> $vs_totconn
        eval echo "\${vs_count_oid${i}}" >> $vs_totconn
    done
    line >> $vs_totconn
} 

function vs_maxconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.10.2.3.1.10 > $vs_maxconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.10.2.3.1.10 > $vs_maxconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval vs_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $vs_maxconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval vs_count_name${count}=`echo $line | awk -F '\"' '{print $2}'`
    done < $vs_maxconn_name_tmp
    
    line >> $vs_maxconn
    echo -e "LTM Virtual Server Client Maximum Connections" >> $vs_maxconn
    echo "" >> $vs_maxconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${vs_count_name${i}}" >> $vs_maxconn
        echo -en "\t\t" >> $vs_maxconn
        eval echo "\${vs_count_oid${i}}" >> $vs_maxconn
    done
    
    line >> $vs_maxconn
} 

function pool_curconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.5.2.3.1.8 > $pool_curconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.5.2.3.1.8 > $pool_curconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval pool_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $pool_curconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval pool_count_name${count}=`echo $line | awk -F '\"' '{print $2}'`
    done < $pool_curconn_name_tmp
    
    line >> $pool_curconn
    echo -e "LTM Pool Server Current Connections" >> $pool_curconn
    echo "" >> $pool_curconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${pool_count_name${i}}" >> $pool_curconn
        echo -en "\t\t" >> $pool_curconn
        eval echo "\${pool_count_oid${i}}" >> $pool_curconn
    done
    
    line >> $pool_curconn
}

function pool_totconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.5.2.3.1.7 > $pool_totconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.5.2.3.1.7 > $pool_totconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval pool_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $pool_totconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval pool_count_name${count}=`echo $line | awk -F '\"' '{print $2}'`
    done < $pool_totconn_name_tmp
    
    line >> $pool_totconn
    echo -e "LTM Pool Server Total Connections" >> $pool_totconn
    echo "" >> $pool_totconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${pool_count_name${i}}" >> $pool_totconn
        echo -en "\t\t" >> $pool_totconn
        eval echo "\${pool_count_oid${i}}" >> $pool_totconn
    done
    
    line >> $pool_totconn
} 

function pool_maxconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.5.2.3.1.6 > $pool_maxconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.5.2.3.1.6 > $pool_maxconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval pool_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $pool_maxconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval pool_count_name${count}=`echo $line | awk -F '\"' '{print $2}'`
    done < $pool_maxconn_name_tmp
    
    line >> $pool_maxconn
    echo -e "LTM Pool Server Maximum Connections" >> $pool_maxconn
    echo "" >> $pool_maxconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${pool_count_name${i}}" >> $pool_maxconn
        echo -en "\t\t" >> $pool_maxconn
        eval echo "\${pool_count_oid${i}}" >> $pool_maxconn
    done
    
    line >> $pool_maxconn
} 

function member_curconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.5.4.3.1.11 > $member_curconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.5.4.3.1.11 > $member_curconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval member_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $member_curconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval member_count_name${count}=`echo $line | awk -F '[\"|.| ]+' '{print $2"-"$4"."$5"."$6"."$7":"$8}'`
    done < $member_curconn_name_tmp
    
    line >> $member_curconn
    echo -e "LTM Pool Member Server Current Connections" >> $member_curconn
    echo "" >> $member_curconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${member_count_name${i}}" >> $member_curconn
        echo -en "\t\t" >> $member_curconn
        eval echo "\${member_count_oid${i}}" >> $member_curconn
    done
    
    line >> $member_curconn
}

function member_totconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.5.4.3.1.10 > $member_totconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.5.4.3.1.10 > $member_totconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval member_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $member_totconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval member_count_name${count}=`echo $line | awk -F '[\"|.| ]+' '{print $2"-"$4"."$5"."$6"."$7":"$8}'`
    done < $member_totconn_name_tmp
    
    line >> $member_totconn
    echo -e "LTM Pool Member Server Total Connections" >> $member_totconn
    echo "" >> $member_totconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${member_count_name${i}}" >> $member_totconn
        echo -en "\t\t" >> $member_totconn
        eval echo "\${member_count_oid${i}}" >> $member_totconn
    done
    
    line >> $member_totconn
}

function member_maxconn_start()
{
    snmpwalk -v 2c -c public localhost -On .1.3.6.1.4.1.3375.2.2.5.4.3.1.9 > $member_maxconn_oid_tmp
    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3375.2.2.5.4.3.1.9 > $member_maxconn_name_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval member_count_oid${count}=`echo $line | awk '{print $1}'`
    done < $member_maxconn_oid_tmp
    
    count=0
    while read line
    do
        count=$((${count}+1))
        eval member_count_name${count}=`echo $line | awk -F '[\"|.| ]+' '{print $2"-"$4"."$5"."$6"."$7":"$8}'`
    done < $member_maxconn_name_tmp
    
    line >> $member_maxconn
    echo -e "LTM Pool Member Server Maximum Connections" >> $member_maxconn
    echo "" >> $member_maxconn
    
    for i in `seq 1 $count`
    do
        eval echo -n "\${member_count_name${i}}" >> $member_maxconn
        echo -en "\t\t" >> $member_maxconn
        eval echo "\${member_count_oid${i}}" >> $member_maxconn
    done
    
    line >> $member_maxconn
}

function delete_tmp()
{
    find $path -type f -name "*.tmp" | xargs rm -f {}
}

function main()
{
    define
    check
    vs_curconn_start
    vs_totconn_start
    vs_maxconn_start
    pool_curconn_start
    pool_totconn_start
    pool_maxconn_start
    member_curconn_start
    member_totconn_start
    member_maxconn_start
    delete_tmp
}

main


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