Linux服务器监控系统scout_functions
########################################## ## ## ## 服务器监控系统(函数部分) ## ## ## ## 版本号: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)####################