美文网首页
Scout(Linux服务器监控系统函数库scout_funct

Scout(Linux服务器监控系统函数库scout_funct

作者: 武汉周杰 | 来源:发表于2020-02-22 20:17 被阅读0次
##########################################  
##                                      ## 
##       服务器监控系统(函数部分)       ## 
##                                      ## 
##             版本号:1.0.0             ## 
##                                      ## 
##              程序:周杰               ## 
##                                      ## 
##  版权所有:武汉卓杰教育网络科技有限公司  ## 
##                                      ## 
##            日期:2002年3月            ## 
##                                      ## 
########################################## 


##################
## 定义基本函数 ##
##################

####################函数err_par_num(err_fun_name,err_par_num)####################
err_par_num() {
echo "发现错误!函数$1的参数个数为$2!不符合函数$1的要求!请修正该错误!"
}
####################函数err_par_num(err_fun_name,err_par_num)####################

####################函数s_re(len,sym,color)####################
#函数s_re用于(慢速的)重复输入一定数量的符号
#其中$1为待输出符号的长度,$2为待输出的符号类型,$3为待输出的颜色类型
#如果$2为空,则输出$1个长度的空格
#如果$3为空,则输出为白色
s_re() {
    if [ $# -ge 1 ] && [ $# -le 3 ]
    then
        if [ $3 ]
        then
            echo -n "$3"
        else
            echo -n "$N_WHT_C"
        fi
        num=0
        while [ $num -lt $1 ]
        do
            if [ $2 ]
            then
                echo -n "$2"
            else
                echo -n " "
            fi
            num=`expr $num + 1`
        done
        echo -n "$CLS_C"
    else
        err_par_num "S_Re()" "$#"
    fi
}
####################函数s_re(len,sym,color)####################

####################函数f_re(len,sym,color)####################
#函数f_re用于(快速的)重复输入一定数量的符号
#其中$1为待输出符号的长度,$2为待输出的符号类型,$3为待输出的颜色类型
#如果$2为空,则输出$1个长度的空格
#如果$3为空,则输出为白色
f_re() {
    if [ $# -ge 1 ] && [ $# -le 3 ]
    then
        if [ $3 ]
        then
            echo -n "$3"
        else
            echo -n "$N_WHT_C"
        fi
        num=0
        tmps=""
        while [ $num -lt $1 ]
        do
            if [ $2 ]
            then
                tmps=$tmps$2
            else
                tmps=$tmps" "
            fi
            num=`expr $num + 1`
        done
        echo -n "$tmps"
        echo -n "$N_WHT_C"
    else
        err_par_num "F_Re()" "$#"
    fi
}
####################函数f_re(len,sym,color)####################

####################函数s_line(len,sym,color)####################
#函数s_line用于(慢速的)输出一行符号
#其中$1为待输出符号的长度,$2为待输出的符号类型,$3为待输出的颜色类型
#如果参数$1不为空,则执行输出;如果$1为空,则报错并退出
#如果$3为空,则输出为白色
s_line() {
    if [ $# -ge 1 ] && [ $# -le 3 ]
    then 
        #计算两边要添加的空格的数量
        sides_num=0
        sides_num=`expr $MAX_LEN - $1`
        sides_num=`expr $sides_num / 2`
        #输出前面的空格
        s_re $sides_num
        #输出中间的符号
        s_re $1 "$2" "$3"
        #输出后面的空格
        s_re $sides_num
        echo ""
    else
        err_par_num "S_Line()" "$#"
    fi
}
####################函数s_line(len,sym,color)####################


##################
## 定义综合函数 ##
##################

####################函数c_f_f_title(len,sides_len,sym,side_color,title_array,title_color)####################
#函数c_f_f_title用于(综合的)(快速的)(快速的)输出一个标题框
#其中$1为标题总的长度,$2为两侧符号的长度
#$3为两侧的符号类型,$4为待输出的两侧颜色类型
#$5为中间标题的内容的集合,$6为待输出的标题颜色类型
#若$5(即中间标题的内容)为空,则仅输出两侧的符号
#如果参数$1不为空,则执行输出;如果$1为空,则报错并退出
#如果$4或$6为空,则输出为白色
c_f_f_title() {
    if [ $# -ge 2 ] && [ $# -le 6 ]
    then 
        ######no_echo_f_line $1 "$3" "$4"######
        ######累计并保存line到变量f_f_line_str中######
        f_f_line_str=""
        #计算两边要添加的空格的数量
        sides_num=0
        sides_num=`expr $MAX_LEN - $1`
        sides_num=`expr $sides_num / 2`
        tmps=""
        #累计前面的空格
        tmps=`f_re $sides_num`
        #累计中间的符号
        tmps=$tmps`f_re $1 "$3" "$4"`
        #累计后面的空格
        tmps=$tmps`f_re $sides_num`
        #将累计保存
        f_f_line_str="$tmps"
        ######累计并保存line到变量f_f_line_str中######
        ######no_echo_f_line $1 "$3" "$4"######
        
        ######no_echo_f_title $1 $2 "$3" "$4"######
        ######累计并保存空title到变量f_f_title_str中######
        f_f_title_str=""
        #计算外侧要添加的空格的数量
        out_sides_num=0
        out_sides_num=`expr $MAX_LEN - $1`
        out_sides_num=`expr $out_sides_num / 2`
        #计算内侧要添加的空格的数量
        in_sides_num=0
        in_sides_num=`expr $1 - $2 \* 2`   ###注意这里已经将后面的屏蔽"- ${#5}"
        in_sides_num=`expr $in_sides_num / 2`
        tmps=""
        #累计外侧前面的空格
        tmps=`f_re $out_sides_num`
        #累计前面的符号
        tmps=$tmps`f_re $2 "$3" "$4"`
        #累计内侧前面的空格
        tmps=$tmps`f_re $in_sides_num`
        #累计内侧后面的空格
        tmps=$tmps`f_re $in_sides_num`
        #累计后面的符号
        tmps=$tmps`f_re $2 "$3" "$4"`
        #累计外侧前面的空格
        tmps=$tmps`f_re $out_sides_num`
        #将累计输出
        f_f_title_str="$tmps"
        ######累计并保存空title到变量f_f_title_str中######
        ######no_echo_f_title $1 $2 "$3" "$4"######
        
        ######no_echo_f_f_title $1 $2 "$3" "$4" "$5" "$6"######
        ######累计并保存内容title到数组f_f_title_array[]中######
        declare -a tmps_array=(`echo $5`)
        tmps_num=0
        while [ $tmps_num -lt ${#tmps_array[*]} ]
        do
            #计算外侧要添加的空格的数量
            out_sides_num=0
            out_sides_num=`expr $MAX_LEN - $1`
            out_sides_num=`expr $out_sides_num / 2`
            #计算内侧要添加的空格的数量
            in_sides_num=0
            in_sides_num=`expr $1 - $2 \* 2 - ${#tmps_array[$tmps_num]}`
            in_sides_num=`expr $in_sides_num / 2`
            tmps=""
            #累计外侧前面的空格
            tmps=`f_re $out_sides_num`
            #累计前面的符号
            tmps=$tmps`f_re $2 "$3" "$4"`
            #累计内侧前面的空格
            tmps=$tmps`f_re $in_sides_num`
            #累计中间的符号
            if [ ${tmps_array[$tmps_num]} ]
            then
                tmps=$tmps`f_re 1 "${tmps_array[$tmps_num]}" "$6"`
                #如果中间标题内容长度为奇数,则加一个空格
                tmps_odd=0
                tmps_odd=`expr ${#tmps_array[$tmps_num]} / 2`
                tmps_odd=`expr $tmps_odd \* 2`
                if [ $tmps_odd -ne ${#tmps_array[$tmps_num]} ]
                then
                    tmps=$tmps" "
                fi
            fi
            #累计内侧后面的空格
            tmps=$tmps`f_re $in_sides_num`
            #累计后面的符号
            tmps=$tmps`f_re $2 "$3" "$4"`
            #累计外侧前面的空格
            tmps=$tmps`f_re $out_sides_num`
            #将累计保存的数组f_f_title_array[]中
            f_f_title_array[$tmps_num]="$tmps"
            tmps_num=`expr $tmps_num + 1`
        done
        ######累计并保存内容title到数组f_f_title_array[]中######
        ######no_echo_f_f_title $1 $2 "$3" "$4" "$5" "$6"######
        
        ######输出所有累计并保存着的变量######
        echo "$f_f_line_str"
        echo "$f_f_title_str"
        tmps_num=0
        while [ $tmps_num -lt ${#tmps_array[*]} ]
        do
            echo "${f_f_title_array[$tmps_num]}"
            echo "$f_f_title_str"
            tmps_num=`expr $tmps_num + 1`
        done
        echo "$f_f_line_str"
        ######输出所有累计并保存着的变量######
    else
        err_par_num "C_F_F_Title" "$#"
    fi
}
####################函数c_f_f_title(len,sides_len,sym,sides_color,title_array,title_color)####################

####################函数c_s_info(len,sides_len,sides_sym,sides_color,middle_sym,middle_color,front_info_array,front_color,back_info_array,back_color)####################
#函数c_s_info用于(综合的)(慢速的)输出一个两侧有符号,两侧有信息,中间有符号的信息框
#其中$1为信息总的长度,$2为两侧符号的长度
#$3为两侧的符号类型,$4为待输出的两侧符号颜色类型
#$5为中间的符号类型,$6为中间符号颜色类型
#$7为前面信息的内容的集合,$8为前面信息颜色类型
#$9为后面信息的内容的集合,$10为后面信息颜色类型
#若$5(即中间标题的内容)为空,则仅输出两侧的符号
#如果参数$1不为空,则执行输出;如果$1为空,则报错并退出
#如果$4或$6为空,则输出为白色
c_s_info() {
    if [ $# -ge 2 ] && [ $# -le 10 ]
    then 
        s_line $1 "$3" "$4"
        declare -a tmps_front_array=(`echo $7`)
        declare -a tmps_back_array=(`echo $9`)
        tmps_num=0
        while [ $tmps_num -lt ${#tmps_front_array[*]} ]
        do
            #计算外侧要添加的空格的数量
            out_sides_num=0
            out_sides_num=`expr $MAX_LEN - $1`
            out_sides_num=`expr $out_sides_num / 2`
            #计算中间要添加的符号类型的数量
            in_middle_num=0
            in_middle_num=`expr $1 - $2 \* 2 - $BLANK_LEN \* 2 - ${#tmps_front_array[$tmps_num]} - ${#tmps_back_array[$tmps_num]}`
            #输出外侧前面的空格
            s_re $out_sides_num
            #输出前面的符号
            s_re $2 "$3" "$4"
            #输出内侧前面的空格
            s_re $BLANK_LEN
            #输出前面的信息
            if [ ${tmps_front_array[$tmps_num]} ]
            then
                s_re 1 "${tmps_front_array[$tmps_num]}" "$8"
            fi
            #输出中间的符号类型
            s_re $in_middle_num "$5" "$6"
            #输出后面的信息
            if [ ${tmps_back_array[$tmps_num]} ]
            then
                s_re 1 "${tmps_back_array[$tmps_num]}" "${10}"
            fi
            #输出内侧后面的空格
            s_re $BLANK_LEN
            #输出后面的符号
            s_re $2 "$3" "$4"
            #输出外侧后面的空格
            s_re $out_sides_num
            echo ""
            s_line $1 "$3" "$4"
            tmps_num=`expr $tmps_num + 1`
        done
    else
        err_par_num "C_S_Info" "$#"
    fi
}
####################函数c_s_info(len,sides_len,sides_sym,sides_color,middle_sym,middle_color,front_info,front_color,back_info,back_color)####################

相关文章

网友评论

      本文标题:Scout(Linux服务器监控系统函数库scout_funct

      本文链接:https://www.haomeiwen.com/subject/vydrqhtx.html