注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

慵懒的乌龟

——若有,且珍惜~

 
 
 

日志

 
 

应用shell脚本和批处理脚本编程实现自动化测试  

2011-08-18 15:29:53|  分类: 技术类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这几天一直在边学边写测试脚本,感觉挺有收获,今天完工,将写的脚本简单回顾了一下:

本次压力测试的目标是测试监控系统中,当agent子系统达到100套时,整个监控体系的承受能力。

要求agent子系统运行在windows系列 (win2000,win2003,win2008)、linux、unix系列(aix、solaris)操作系统下。整个测试过程中,跨平台和100 套agent的部署工作量非常大,为了提高部署效率,通过编写脚本实现自动批量安装,并且通过脚本实现批量启动和停止服务。

————————————————————————————————————————

Linux脚本

/** 以下shell脚本是在linux系统下,执行压力测试时,实现批量安装测试程序,并修改配置文件中的参数。**/ 

 

#!/bin/sh                              /** **/

cd /home/lzh/mntpre                    

for ((loop=1; loop<=20; loop++));           /** 循环**/

do                                     /** do和done直接是循环执行的内容**/

cp DMS-Agent-linux-5.0_2.0.01 DMS-Agent-linux-5.0_2.0.01-$loop

                                      /** 文件夹及内容递归复制**/

cd ./DMS-Agent-linux-5.0_2.0.01-$loop/conf

sed “/s/5555/6001/g” configuration.xml > configuration1.xml

                                       /**修改配置文件中的端口 **/

sed “/s/\/home/lzh\/GBase8d5-1/\/home/lzh\/monitor\/GBase8d5-1/g” configuration1.xml > configuration.xml                         /** 修改配置文件中的路径**/

echo installed agent$loop!                   /**显示提示信息 **/

Done                                    /** 循环结束**/

Echo finished  $loop agent installation!        /** 显示提示信息**/

 

 

/**以下shell脚本是在linux系统中执行压力测试时,实现批量启动和停止服务。 **/

#!/bin/sh                            /**,shell脚本以#!符号开头,使用/bin/sh解释执行**/

echo start agent started!                /** echo屏幕打印提示信息**/

#for loop in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

/** #是注释。For循环的一种表示方法**/

for ((loop=1; loop<=20; loop++));        /** for循环的另一种表示方法**/

do                                  /** 循环开始标志,do 和done是循环执行的内容。 **/

cd /home/gaoqian/DMS-Agent-linux-5.0_2.0.01-$loop/bin

                                    /** 改变路径**/

./startAgent.sh                         /** 执行.sh程序**/

sleep 1                               /** 休眠1秒钟**/

done                                 /** 循环结束标志**/

echo finished start agent!                 /** 屏幕打印提示信息**/

 

 

 

——————————————————————————————————————

unix脚本

/** 以下批处理程序是在unix(aix或者solaris)系统下压力测试时,实现批量安装测试程序,并修改配置文件中的参数。**/

@echo off                                /** **/

for loop 1 2 3 4 5 6 7 8 9 10

do                                     /** do和done直接是循环执行的内容**/

cp DMS-Agent-linux-5.0_2.0.01 DMS-Agent-linux-5.0_2.0.01-$loop

                                      /** 文件夹及内容递归复制**/

cd ./DMS-Agent-linux-5.0_2.0.01-$loop/conf

sed “/s/5555/6001/g” configuration.xml > configuration1.xml

                                       /**修改配置文件中的端口 **/

sed “/s/\/home/lzh\/GBase8d5-1/\/home/lzh\/monitor\/GBase8d5-1/g” configuration1.xml > configuration.xml                         /** 修改配置文件中的路径**/

echo installed agent$loop!                   /**显示提示信息 **/

Done                                    /** 循环结束**/

Echo finished  $loop agent installation!        /** 显示提示信息**/

 

 

/**以下shell脚本是在unix(aix或者solaris)系统下执行压力测试时,实现批量启动和停止服务。 **/

#!/bin/sh                            /**,shell脚本以#!符号开头,使用/bin/sh解释执行**/

echo start agent started!                /** echo屏幕打印提示信息**/

#for loop in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

/** #是注释。For循环的一种表示方法**/

for loop 1 2 3 4 5 6 7 8 9 10        /** for循环的另一种表示方法**/

do                                  /** 循环开始标志,do 和done是循环执行的内容。 **/

cd /home/gaoqian/DMS-Agent-linux-5.0_2.0.01-$loop/bin

                                    /** 改变路径**/

./startAgent.sh                         /** 执行.sh程序**/

sleep 1                               /** 休眠1秒钟**/

done                                 /** 循环结束标志**/

echo finished start agent!                 /** 屏幕打印提示信息**/

————————————————————————————————————————

windows脚本

/** 以下批处理程序是在windows系统下压力测试时,实现批量安装测试程序,并修改配置文件中的参数。**/

@echo off                                /** **/

for /l %%i in (1,1,20)do (cd D:\lzh\mntpre          /** 循环执行do后边()中内容**/

md DMS-Agent-win-5.0_2.0.01-%%i              /** 建立文件夹**/

xcopy DMS-Agent-win-5.0_2.0.01 DMS-Agent-win-5.0_2.0.01-%%i /s

                                             /** 递归复制文件夹及子文件夹内容**/

cd DMS-Agent-win-5.0_2.0.01-%%i/conf            /** **/

call :replace configuration.xml 5555 600%%i >configuration1.xml

                                              /** 调用子程序,并不退出批处理**/

del configuration.xml                             /**删除 **/

ren configuration1.xml configuration.xml              /** 重命名**/

:replace                                         /** 子程序**/

    setlocal ENABLEDELAYEDEXPANSION

   for /f "tokens=1* delims=" %%j in (%1) do set var=%%j & echo !var:%2=%3!

                                        /** 将变量“%3”替换文件“%1”中的变量“%2”**/

    endlocal

ping 127.0.0.1 -n 1>nul                              /** 下一个循环前停止1秒**/

echo agent%%i has been installed!                      /** 打印提示信息**/

)

 

/** 以下批处理程序,是在windows系统中执行压力测试时,实现批量启动和停止服务。**/

@echo off                             /** @表示不显示该条命令,off表示不显示该行后边的内容**/

for /l %%i in (1,1,20)                     /**循环执行 **/

do ( cd d:\lzh\DMS-Agent-win-5.0_2.0.01-%%i\bin

                                       /**循环执行do后边()中内容**/

start startAgent.bat                        /**启动另一个窗口运行.bat程序 **/

echo agent%%i has been started!             /** 每次完成启动打印提示信息**/

ping 127.0.0.1 -n 2 >nul                    /** 停止2秒钟再执行下个循环 **/

)

 

 

/** 以下批处理程序,是在windows系统中执行压力测试时,实现批量启动和停止服务。**/

@echo off                             /** @表示不显示该条命令,off表示不显示该行后边的内容**/

for /l %%i in (1,1,20)                     /**循环执行 **/

do ( cd d:\lzh\DMS-Agent-win-5.0_2.0.01-%%i\bin

                                       /**循环执行do后边()中内容**/

start startAgent.bat                        /**启动另一个窗口运行.bat程序 **/

echo agent%%i has been started!             /** 每次完成启动打印提示信息**/

ping 127.0.0.1 -n 2 >nul                    /** 停止2秒钟再执行下个循环 **/

)

*********************************************************************************

注意:

一、for循环语句的写法在不同操作系统下不一样:

在linux系统中的写法:for ((loop=1; loop<=20; loop++));和for loop 1 2 3 4 5 6 7 8 9 10

在unix系统中不支持这样的写法,应该写成:for loop 1 2 3 4 5 6 7 8 9 10

在windows中的写法又不一样,应该写成:for /l %%i in (1,1,20)

 

二、windows下用以上脚本不支持包含!符号的文本。

遇到一个问题:在window系统中的批处理程序,在修改文件内容时,如果文件中包含符号!时,批处理后的文件内容中会丢失该符号。可以自己编写程序实现。(sed,cat)



from:http://pplily.blog.163.com/blog/static/1370950920107553256338/

  评论这张
 
阅读(942)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017