#!/bin/bash #################################################################################
# 说 明
# 2、多线程测试
#
# 使用方法: ./webtest
# 使用本脚本程序,可进程对网关web进行压力测试,测试
# 功能主要包括:
# 1、对自身机器的压力测试
# 2、对其他机器的压力测试
#
################################################################################### ######################################自定义部分####################################
#
# 参数简介:
# SERVER为配置要测试的机器IP地址
# NAME定义设备的名称
# GRAPH定义是否生成折线图的参数文件
# VALUE此值为定义对下载速度测试的次数
# TIME 配置是否开启长时间测试,不间断测试
# MODE 配置本机器担当的角色
#
##################################################################################### #要测试的URL地址,也可写ftp的。
URL=https://192.168.0.133/wget.jsp
export URL #服务器标识
NAME=lanse #设置是否生成图表数据
#GRAPH=OFF
GRAPH=ON #设置下载速度测试的次数;
#如果在SERVER端配置此参数后,客户端无法同步,可以tailf test.logfor;
#当wget到这个数值时,再在客户端执行脚本。如果不需要可以将此处设置为0;
#SC模式不受其影响
VALUE=0 #VALUE=5000 #长时间压力测试单位(分钟);
#配置TIME小于MAXTIME为开启长时间压力测试。如果相等为不开启。 MAXTIME=6000
TIME=6000 #设置模式,分(SC/SERVER/CLIENT)
#SC 即是客户端模式,又是服务器模式,主要用于自压测试;
#SERVER 主要用来测试别的设备;
#CLIENT 当作客户端来用,主要配合另一台SERVER对自己的压力测试来提取系统资源信息。 #MODE=CLIENT
MODE=SERVER
#MODE=SC #配置压力级别, 分0/1/2/3, 4个级别,级别越高,压力越小, 默认0为最大压力;
#适合稳定性测试。 LEVEL=0
#LEVEL=1
#LEVEL=2
#LEVEL=3 #配置停止几秒后增加一个线程。 SPACE=3 #配置本次压力的测试,一共下载多少次,用来精确分析数据,最好不要与长时间同时配置;
#主要可以得到对不同设备测试,下载所用时间,成功率,失败率;
#如果同时配置,那个先执行完就结束进程;
#配置NUMBER小于MAXNUMBER为开启状态。 MAXNUMBER=9000000
NUMBER=3000
###########################程序运行部分########################################
>file
>startfail
>test.logfor
echo 2 >sta
date +%s > time
echo 2 > whstat
>OK
>test.logwhile
>graph
>established #1^$#
if [ $MODE = SC -o $MODE = SERVER ] ; then echo 'time=`date +"%Y-%m-%d %H:%M:%S"`' > test.sh
echo "while [ 1 ] " >> test.sh
echo "do" >> test.sh
echo "wget $URL -c -q -t 3 -T 5 --no-check-certificate" >>test.sh
echo ' if [ $? -eq 0 ] ; then ' >>test.sh
echo ' echo $time wget ok >> test.logwhile ' >>test.sh
echo " else " >> test.sh
echo ' echo $time wget fail >> test.logwhile ' >>test.sh
echo " fi" >>test.sh
if [ $LEVEL -eq 1 ] ; then
echo "sleep 1 " >> test.sh
fi
if [ $LEVEL -eq 2 ] ; then
echo "sleep 2 " >> test.sh
fi
if [ $LEVEL -eq 3 ] ; then
echo " sleep 3 " >> test.sh
fi
echo "done" >> test.sh
chmod a+x test.sh
for ((i=0;i<=$VALUE;i++))
do
#2^#
wget $URL -c -q -t 3 -T 5 --no-check-certificate
if [ $? -eq 0 ] ; then
echo $time wget ok $i >> test.logfor
else
echo $time wget fail $i >> test.logfor
fi
#2$#
done
T=`cat time`
N=`date +%s `
S=`echo "$N-$T" | bc `
M=`echo "scale=1;$S/60"|bc |awk -F. '{print $1}'`
MS=`echo "scale=1;$S/60"|bc |awk -F. '{print $2*0.01*60}'|awk -F. '{print $1}'`
echo \ ; echo \ >> file
echo "当前模式为 【 $MODE 】 模式" >> file
echo \ ; echo \ >> file
echo "下载速度测试结果:" >>file
if [ $S -lt 60 ] ; then
echo \ ; echo \ >> file
echo "本次下载用了$S 秒" >>file