AutoIT自动化构想的一个脚本



#Region AutoIt3Wrapper 预编译参数(常用参数)
#AutoIt3Wrapper_Icon=           ;图标,支持EXE,DLL,ICO
#AutoIt3Wrapper_OutFile=         ;输出文件名
#AutoIt3Wrapper_OutFile_Type=exe       ;文件类型
#AutoIt3Wrapper_Compression=4        ;压缩等级
#AutoIt3Wrapper_UseUpx=y          ;使用压缩
#AutoIt3Wrapper_Res_Comment=         ;注释
#AutoIt3Wrapper_Res_Description=       ;详细信息
#AutoIt3Wrapper_Res_Fileversion=       ;文件版本
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=p    ;自动更新版本 
#AutoIt3Wrapper_Res_LegalCopyright=       ;版权
#AutoIt3Wrapper_Change2CUI=N                       ;修改输出的程序为CUI(控制台程序)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%  ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                       ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=            ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=         ;语法检查
;#AutoIt3Wrapper_Run_Before=         ;运行前
;#AutoIt3Wrapper_Run_After=         ;运行后
#EndRegion AutoIt3Wrapper 预编译参数设置完成
#cs ____________________________________

 Au3 版本: 3.3.6.1
 脚本作者: wozijisunfly
 Email:
 QQ/TM: Test Dept.
 脚本版本: v-0.1
 脚本功能: 实现meter工具自动化脚本

#ce _______________脚本开始_________________


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiIPAddress.au3>
Opt('MustDeclareVars', 1)
Opt("GUICloseOnESC", 0)

Global $server_num=1,$client_num=1,$server[1000][8],$client[1000][16],$a_server[8],$a_client[16]
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-28
;~ 功能:检查文件是否存在于固定路径下
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _check_file($path)
 Local $attr
 If FileExists($path) Then
  $attr = FileGetAttrib($path)
  If StringInStr($attr,"N") Or StringInStr($attr,"C") Or StringInStr($attr,"O") Or StringInStr($attr,"A") Then
   Return "yes"
  Else
   Return "no"
  EndIf
 Else
  Return "no"
 EndIf
EndFunc
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-28
;~ 功能:创建图形界面,方便操作
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _create_gui()
 Local $gui,$server_btn,$client_btn,$msg,$execute_btn
 $gui = GUICreate("Auto-Meter",400,200,Default,Default)
 $server_btn = GUICtrlCreateButton("Server-Config",30,50,150,40)
 GUICtrlSetFont(-1,12)
 $client_btn = GUICtrlCreateButton("Client-Config",220,50,150,40)
 GUICtrlSetFont(-1,12)
 $execute_btn = GUICtrlCreateButton("Execute",120,120,150,40)
 GUICtrlSetFont(-1,12)
 
 GUISetState()
 While 1
  $msg = GUIGetMsg()
  Select
   Case $msg = $server_btn
    GUISetStyle(BitOR($WS_POPUPWINDOW, $WS_THICKFRAME), BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOOLWINDOW),$gui)
    GUICtrlSetState($server_btn,$GUI_DISABLE)
    GUICtrlSetState($client_btn,$GUI_DISABLE)
    GUICtrlSetState($execute_btn,$GUI_DISABLE)
    _server_gui()    
    GUICtrlSetState($server_btn,$GUI_ENABLE)
    GUICtrlSetState($client_btn,$GUI_ENABLE)
    GUICtrlSetState($execute_btn,$GUI_ENABLE)
    GUISetStyle(BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU), 0)
    
   Case $msg = $client_btn
    GUISetStyle(BitOR($WS_POPUPWINDOW, $WS_THICKFRAME), BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOOLWINDOW), $gui)
    GUICtrlSetState($server_btn,$GUI_DISABLE)
    GUICtrlSetState($client_btn,$GUI_DISABLE)
    GUICtrlSetState($execute_btn,$GUI_DISABLE)    
    _client_gui()    
    GUICtrlSetState($server_btn,$GUI_ENABLE)
    GUICtrlSetState($client_btn,$GUI_ENABLE)
    GUICtrlSetState($execute_btn,$GUI_ENABLE)
    GUISetStyle(BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU), 0)
   Case $msg = $execute_btn
    GUISetStyle(BitOR($WS_POPUPWINDOW, $WS_THICKFRAME), BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOOLWINDOW), $gui)
    GUICtrlSetState($server_btn,$GUI_DISABLE)
    GUICtrlSetState($client_btn,$GUI_DISABLE)
    GUICtrlSetState($execute_btn,$GUI_DISABLE)
    _execute_now()
    GUICtrlSetState($server_btn,$GUI_ENABLE)
    GUICtrlSetState($client_btn,$GUI_ENABLE)
    GUICtrlSetState($execute_btn,$GUI_ENABLE)
    GUISetStyle(BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU), 0)
   Case $msg = $GUI_EVENT_CLOSE
    Exit
  EndSelect
  
 WEnd
 
EndFunc
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-29
;~ 功能:立刻执行Meter程序,进行收发判断
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _execute_now()
 
 Local $mark1,$mark2="",$file,$line,$s_num = 1,$c_num = 1,$s[1000][8],$c[1000][16],$n,$i,$soc_cli
 
 Dim $arr
 
 If FileExists(@ScriptDir & "\___server.config") And FileExists(@ScriptDir & "\___client.config") Then
  
  $file = FileOpen(@ScriptDir & "\___server.config", 0)
  ; 检查打开的文件是否可读
  If $file = -1 Then
   MsgBox(0, "ERROR", "不能打开" & @ScriptDir & "\___server.config文件。")
   Exit
  EndIf
  ; 每次读取一行文本,直到文件结束.
  While 1
   $line = FileReadLine($file)
   If @error = -1 Then ExitLoop
   
   If StringInStr($line,"<",1) == 1 And StringInStr($line,"</",1) <> 1 Then
    $mark1 = $line
    $mark2 = StringReplace($mark1,"<","</")
    ContinueLoop
   EndIf
   If StringCompare($line,$mark2) == 0 Then
    $mark2 = ""
    $s_num = $s_num + 1
    ContinueLoop
   EndIf
   
   $arr = StringSplit($line,"=>",1)
   Switch $arr[1]
    Case "meter_server"
     $s[$s_num][0]=$arr[2]
    Case "listen_port"
     $s[$s_num][1]=$arr[2]
    Case "simulate_client_ip"
     $s[$s_num][2]=$arr[2]
    Case "simulate_client_port"
     $s[$s_num][3]=$arr[2]
    Case "simulate_server_ip"
     $s[$s_num][4]=$arr[2]
    Case "simulate_server_port"
     $s[$s_num][5]=$arr[2]
    Case "sequence"
     $s[$s_num][6]=$arr[2]
    Case "pcapfile"
     $s[$s_num][7]=$arr[2]
    Case Else
     MsgBox(0,"WRONG","无法识别的字符" & $arr[1])
   EndSwitch
  Wend

  FileClose($file)
  
  $file = FileOpen(@ScriptDir & "\___client.config", 0)
  ; 检查打开的文件是否可读
  If $file = -1 Then
   MsgBox(0, "ERROR", "不能打开" & @ScriptDir & "\___client.config文件。")
   Exit
  EndIf
  ; 每次读取一行文本,直到文件结束.
  While 1
   $line = FileReadLine($file)
   If @error = -1 Then ExitLoop
   
   If StringInStr($line,"<",1) == 1 And StringInStr($line,"</",1) <> 1 Then
    $mark1 = $line
    $mark2 = StringReplace($mark1,"<","</")
    ContinueLoop
   EndIf
   If StringCompare($line,$mark2) == 0 Then
    $mark2 = ""
    $c_num = $c_num + 1
    ContinueLoop
   EndIf
   
   $arr = StringSplit($line,"=>",1)
   Switch $arr[1]
    Case "meter_client"
     $c[$c_num][0]=$arr[2]
    Case "socket_client"
     $c[$c_num][1]=$arr[2]
    Case "server_ip"
     $c[$c_num][2]=$arr[2]
    Case "server_port"
     $c[$c_num][3]=$arr[2]
    Case "listen_port"
     $c[$c_num][4]=$arr[2]
    Case "simulate_client_ip"
     $c[$c_num][5]=$arr[2]
    Case "simulate_client_port"
     $c[$c_num][6]=$arr[2]
    Case "simulate_server_ip"
     $c[$c_num][7]=$arr[2]
    Case "simulate_server_port"
     $c[$c_num][8]=$arr[2]
    Case "simulate_client_count"
     $c[$c_num][9]=$arr[2]
    Case "connect_per_sec"
     $c[$c_num][10]=$arr[2]
    Case "loop_count"
     $c[$c_num][11]=$arr[2]
    Case "sequence"
     $c[$c_num][12]=$arr[2]
    Case "think_time"
     $c[$c_num][13]=$arr[2]
    Case "run_time"
     $c[$c_num][14]=$arr[2]
    Case "pcapfile"
     $c[$c_num][15]=$arr[2]
    Case Else
     MsgBox(0,"WRONG","无法识别的字符" & $arr[1])
   EndSwitch
    
  Wend
  FileClose($file)
  
  If $c_num > $s_num Then
   $n = $s_num
   If $n == 1 Then
    MsgBox(0,"WRONG","没有配置Server-Config端,请配置。")
    Return
   EndIf
  Else
   $n = $c_num
   If $n == 1 Then
    MsgBox(0,"WRONG","没有配置Client-Config端,请配置。")
    Return
   EndIf
  EndIf
  For $i = 1 To $n - 1
   $soc_cli = $c[$i][1] & " "& $c[$i][2] & "#" & $c[$i][3] & "#"
   
   RunWait(@ComSpec & " /c " & $soc_cli & "cmd[""echo yes > /home/yes.log""] 2", "", Default)
   RunWait(@ComSpec & " /c " & $soc_cli & "copyfile[/home/yes.log,"& @ScriptDir &"\yes.log] 2", "", Default)
;~    MsgBox(0,"","123456789")
   If Not FileExists(@ScriptDir & "\yes.log") Then
    MsgBox(0,"WRONG","服务器端的Socket-Server服务器没有开启,请开启后执行。")
    Return
   EndIf
   RunWait(@ComSpec & " /c " & $soc_cli & "cmd[""rm -rf /home/yes.log""]", "", Default)
   FileDelete(@ScriptDir & "\yes.log")
   RunWait(@ComSpec & " /c " & $soc_cli & "cmd[""rm -rf /home/__meter_server""]", "", Default)
   RunWait(@ComSpec & " /c " & $soc_cli & "cmd[""mkdir /home/__meter_server""]", "", Default)
   RunWait(@ComSpec & " /c " & $soc_cli & "sendfile["& $s[$i][0] &",/home/__meter_server/meter_server]", "", Default)
   RunWait(@ComSpec & " /c " & $soc_cli & "sendfile["& $s[$i][7] &",/home/__meter_server/meter_need.pcap]", "", Default)
   RunWait(@ComSpec & " /c " & $soc_cli & "cmd[""chmod 777 /home/__meter_server/*""]", "", Default)
   Run(@ComSpec & " /c " & $soc_cli & "cmd[""cd /home/__meter_server;./meter_server "& $s[$i][1] & " " & $s[$i][2] & " " & $s[$i][3] & " " & $s[$i][4] & " " & $s[$i][5] & " " & $s[$i][6] & "" & " /home/__meter_server/meter_need.pcap &""]", "", Default)
   
   RunWait(@ComSpec & " /c " & $c[$i][0] & " " & $c[$i][2] & " " & $c[$i][4] & " " & $c[$i][5] & " " & $c[$i][6] & " " & $c[$i][7] & " " & $c[$i][8] & " " & $c[$i][9] & " " & $c[$i][10] & " " & $c[$i][11] & " " & $c[$i][12] & " " & $c[$i][13] & " " & $c[$i][14] & " " & $c[$i][15] & " ", "", @SW_MAXIMIZE)
   RunWait(@ComSpec & " /c " & $soc_cli & "cmd[""kill `ps -ef | grep meter_server | grep -v grep | awk '{print $2}'`""]", "", Default)
;~    RunWait(@ComSpec & " /c " & $soc_cli & "cmd[""ps -ef | grep meter_server | grep -v grep | xargs kill""]", "", Default)
  Next
  
 Else
  MsgBox(0,"WRONG","当前目录下缺少没有配置Server-Config或者Client-Config,程序无法正常执行。" & _
  @CRLF & @CRLF & "请先配置后再执行。")
 EndIf
 
EndFunc
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-28
;~ 功能:创建服务端的界面,对输入参数进行录入
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _server_gui()
 Local $server_gui,$msg,$close_btn,$socket_server,$meter_server,$listen_port,$simulate_client_ip,$reset_btn
 Local $simulate_client_port,$simulate_server_ip,$simulate_server_port,$sequence,$pcapfile,$submit_btn,$return
 $server_gui = GUICreate("",500,480,Default,Default)
 GUISetStyle(BitOR($WS_POPUPWINDOW, $WS_THICKFRAME), BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOOLWINDOW), $server_gui)
 GUICtrlCreateLabel("Meter-Server-Path :",20,20,134,Default)
 GUICtrlSetFont(-1,11)
 $meter_server = GUICtrlCreateInput("",155,17,315,25)
 GUICtrlSetFont(-1,12)
;~  GUICtrlCreateLabel("Socket-Server-Path:",20,50,130,Default)
;~  GUICtrlSetFont(-1,11)
;~  $socket_server = GUICtrlCreateInput("",155,47,315,25)
;~  GUICtrlSetFont(-1,12)
 
 GUICtrlCreateLabel("Listen-Port:",155,80,100,Default)
 GUICtrlSetBkColor(-1,"0x00ff00")
 GUICtrlSetFont(-1,12)

 $listen_port = GUICtrlCreateInput("",260,77,75,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Simulate_Client_IP:",20,140,150,Default)
 GUICtrlSetFont(-1,12)
 $simulate_client_ip = _GUICtrlIpAddress_Create($server_gui, 175, 138,145)
 _GUICtrlIpAddress_SetFont($simulate_client_ip,Default,14)
 
 GUICtrlCreateLabel("Port:",360,140,60,Default)
 GUICtrlSetFont(-1,12)
 $simulate_client_port = GUICtrlCreateInput("",410,138,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 GUICtrlCreateLabel("Simulate_Server_IP:",20,200,150,Default)
 GUICtrlSetFont(-1,12)
 $simulate_server_ip = _GUICtrlIpAddress_Create($server_gui, 175, 198,145)
 _GUICtrlIpAddress_SetFont($simulate_server_ip,Default,14)
 
 GUICtrlCreateLabel("Port:",360,200,60,Default)
 GUICtrlSetFont(-1,12)
 $simulate_server_port = GUICtrlCreateInput("",410,198,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Loop_Start_Sequence:",80,260,160,Default)
 GUICtrlSetFont(-1,12)
 $sequence = GUICtrlCreateInput("",250,257,150,25)
 GUICtrlSetFont(-1,12)
 
 GUICtrlCreateLabel("PcapFile   :",20,320,100,Default)
 GUICtrlSetFont(-1,12)
 $pcapfile = GUICtrlCreateInput("",155,317,315,25)
 GUICtrlSetFont(-1,12)
 
 $submit_btn = GUICtrlCreateButton("Submit",200,400,70,30)
 GUICtrlSetFont(-1,12)
 $reset_btn = GUICtrlCreateButton("Reset",300,400,70,30)
 GUICtrlSetFont(-1,12)
 $close_btn = GUICtrlCreateButton("Close",400,400,70,30)
 GUICtrlSetFont(-1,12)
 
 GUISetState()
 While 1
  $msg = GUIGetMsg()
  Select
   Case $msg = $submit_btn
    If StringCompare(_check_file(GUICtrlRead($meter_server)),"yes") == 0 Then
     $a_server[0] = GUICtrlRead($meter_server)
    ElseIf StringCompare(_check_file(GUICtrlRead($meter_server)),"no") == 0 Then
     MsgBox(0,"WRONG","给定的Meter-Server-Path路径下,没有对应的文件,请确认")
     ContinueLoop
    Else
     MsgBox(0,"ERROR","机器已被病毒入侵,5秒后将关闭程序。",5)
     Exit
    EndIf
    If StringRegExp(GUICtrlRead($listen_port),"^[1-9][0-9]{0,}",0) Then
     $a_server[1] = GUICtrlRead($listen_port)
    Else
     MsgBox(0,"WRONG","请对Listen-Port输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    
    If StringCompare(StringStripWS(_GUICtrlIpAddress_Get($simulate_client_ip),8),"0.0.0.0") == 0 Or StringLen(StringStripWS(_GUICtrlIpAddress_Get($simulate_client_ip),8)) == 7 Then
     MsgBox(0,"WRONG","给出的Simulate-Client-IP不应为" & _GUICtrlIpAddress_Get($simulate_client_ip) & "请重置")
     ContinueLoop
    Else
     $a_server[2] = StringStripWS(_GUICtrlIpAddress_Get($simulate_client_ip),8)
    EndIf
    
    
    If StringRegExp(GUICtrlRead($simulate_client_port),"^[1-9][0-9]{0,}",0) Then
     $a_server[3] = GUICtrlRead($simulate_client_port)
    Else
     MsgBox(0,"WRONG","请对Simulate-Client-Port输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    
    If StringCompare(StringStripWS(_GUICtrlIpAddress_Get($simulate_server_ip),8),"0.0.0.0") == 0 Or StringLen(StringStripWS(_GUICtrlIpAddress_Get($simulate_server_ip),8)) == 7 Then
     MsgBox(0,"WRONG","给出的Simulate-Server-IP不应为" & _GUICtrlIpAddress_Get($simulate_server_ip) & "请重置")
     ContinueLoop
    Else
     $a_server[4] = StringStripWS(_GUICtrlIpAddress_Get($simulate_server_ip),8)
    EndIf
    
    If StringRegExp(GUICtrlRead($simulate_server_port),"^[1-9][0-9]{0,}",0) Then
     $a_server[5] = GUICtrlRead($simulate_server_port)
    Else
     MsgBox(0,"WRONG","请对Simulate-Server-Port输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    
    If StringRegExp(GUICtrlRead($sequence),"^[1-9][0-9]{0,}",0) Then
     $a_server[6] = GUICtrlRead($sequence)
    Else
     MsgBox(0,"WRONG","请对Loop_Start_Sequence输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    If StringCompare(_check_file(GUICtrlRead($pcapfile)),"yes") == 0 Then
     $a_server[7] = GUICtrlRead($pcapfile)
    ElseIf StringCompare(_check_file(GUICtrlRead($pcapfile)),"no") == 0 Then
     MsgBox(0,"WRONG","给定的PcapFile路径下,没有对应的文件,请确认")
     ContinueLoop
    Else
     MsgBox(0,"ERROR","机器已被病毒入侵,5秒后将关闭程序。",5)
     Exit
    EndIf
    
    If StringInStr(_check_server_parameter(),"-") Then
     $return = MsgBox(33,"WARNING","检查到当前输入的值与第 " & _check_server_parameter() & _
     " 次的值相同" & @CRLF & "请确认是否继续输入")
     If $return == 1 Then
;~       Nothing
     ElseIf $return == 2 Then
      ContinueLoop
     Else
      MsgBox(0,"ERROR","机器已被病毒入侵,5秒后将关闭程序。",5)
      Exit
     EndIf
    EndIf
;~     写入配置数据
    FileWriteLine(@ScriptDir & "\___server.config","<" & $server_num & ">")
    FileWriteLine(@ScriptDir & "\___server.config","meter_server=>" & GUICtrlRead($meter_server))
    FileWriteLine(@ScriptDir & "\___server.config","listen_port=>" & GUICtrlRead($listen_port))
    FileWriteLine(@ScriptDir & "\___server.config","simulate_client_ip=>" & _GUICtrlIpAddress_Get($simulate_client_ip))
    FileWriteLine(@ScriptDir & "\___server.config","simulate_client_port=>" & GUICtrlRead($simulate_client_port))
    FileWriteLine(@ScriptDir & "\___server.config","simulate_server_ip=>" & _GUICtrlIpAddress_Get($simulate_server_ip))
    FileWriteLine(@ScriptDir & "\___server.config","simulate_server_port=>" & GUICtrlRead($simulate_server_port))
    FileWriteLine(@ScriptDir & "\___server.config","sequence=>" & GUICtrlRead($sequence))
    FileWriteLine(@ScriptDir & "\___server.config","pcapfile=>" & GUICtrlRead($pcapfile))
    FileWriteLine(@ScriptDir & "\___server.config","</" & $server_num & ">")
    
    $server[$server_num][0]=GUICtrlRead($meter_server)
    $server[$server_num][1]=GUICtrlRead($listen_port)
    $server[$server_num][2]=_GUICtrlIpAddress_Get($simulate_client_ip)
    $server[$server_num][3]=GUICtrlRead($simulate_client_port)
    $server[$server_num][4]=_GUICtrlIpAddress_Get($simulate_server_ip)
    $server[$server_num][5]=GUICtrlRead($simulate_server_port)
    $server[$server_num][6]=GUICtrlRead($sequence)
    $server[$server_num][7]=GUICtrlRead($pcapfile)
    
    $server_num = $server_num + 1
    
;~     $server[$server_num][0]=
   Case $msg = $reset_btn
    GUICtrlSetData($meter_server,"")
    GUICtrlSetData($listen_port,"")
    _GUICtrlIpAddress_Destroy($simulate_client_ip)
    $simulate_client_ip = _GUICtrlIpAddress_Create($server_gui, 175, 138,145)
    _GUICtrlIpAddress_SetFont($simulate_client_ip,Default,14)
;~     _GUICtrlIpAddress_Set($simulate_client_ip,"...")
    GUICtrlSetData($simulate_client_port,"")
    _GUICtrlIpAddress_Destroy($simulate_server_ip)
    $simulate_server_ip = _GUICtrlIpAddress_Create($server_gui, 175, 198,145)
    _GUICtrlIpAddress_SetFont($simulate_server_ip,Default,14)
;~     _GUICtrlIpAddress_Set($simulate_server_ip,"...")
    GUICtrlSetData($simulate_server_port,"")
    GUICtrlSetData($sequence,"")
    GUICtrlSetData($pcapfile,"")
   Case $msg = $close_btn
    ExitLoop
  EndSelect
 WEnd
 GUIDelete($server_gui)
EndFunc
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-29
;~ 功能:检查server-config端输入的参数是否与之前输入的参数一致
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _check_server_parameter()
 Local $i,$j,$num = 1,$str = ""
 For $i = 1 To $server_num
  For $j = 0 To 7
   If StringCompare($a_server[$j],$server[$i][$j]) == 0 Then
    $num = $num + 1
   Else
    ExitLoop
   EndIf
  Next
  If $num == 9 Then
   $str = $str & $i & " - "
  EndIf
  $num = 1
 Next
 Return "=>" & $str
EndFunc
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-29
;~ 功能:检查client-config端输入的参数是否与之前输入的参数一致
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _check_client_parameter()
 Local $i,$j,$num = 1,$str = ""
 For $i = 1 To $client_num
  For $j = 0 To 15
   If StringCompare($a_client[$j],$client[$i][$j]) == 0 Then
    $num = $num + 1
   Else
    ExitLoop
   EndIf
  Next
  If $num == 17 Then
   $str = $str & $i & " - "
  EndIf
  $num = 1
 Next
 Return "=>" & $str
EndFunc
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-28
;~ 功能:创建客户端的界面,对输入参数进行录入
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _client_gui()
 Local $client_gui,$meter_client,$socket_client,$listen_port,$simulate_client_ip,$msg,$close_btn,$submit_btn
 Local $simulate_client_port,$simulate_server_ip,$simulate_server_port,$sequence,$pcapfile,$reset_btn,$return
 Local $simulate_client_count,$connect_per_sec,$loop_count,$think_time,$run_time,$server_ip,$server_port
 $client_gui = GUICreate("",500,600,Default,Default)
 GUISetStyle(BitOR($WS_POPUPWINDOW, $WS_THICKFRAME), BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOOLWINDOW), $client_gui)
 
 GUICtrlCreateLabel("Meter-Client-Path :",20,20,134,Default)
 GUICtrlSetFont(-1,11)
 $meter_client = GUICtrlCreateInput("",155,17,315,25)
 GUICtrlSetFont(-1,12)
 GUICtrlCreateLabel("Socket-Client-Path:",20,80,130,Default)
 GUICtrlSetFont(-1,11)
 $socket_client = GUICtrlCreateInput("",155,77,315,25)
 GUICtrlSetFont(-1,12)
 
 GUICtrlCreateLabel("Server_IP:",20,120,120,Default)
 GUICtrlSetFont(-1,12)
 $server_ip = _GUICtrlIpAddress_Create($client_gui, 155, 118,145)
 _GUICtrlIpAddress_SetFont($server_ip,Default,14)
 
 GUICtrlCreateLabel("Server-Port:",310,120,97,Default)
 GUICtrlSetBkColor(-1, 0xFF0000)
 GUICtrlSetFont(-1,12)
 $server_port = GUICtrlCreateInput("",410,118,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Listen-Port:",155,160,100,Default)
 GUICtrlSetBkColor(-1, 0x00ff00)
 GUICtrlSetFont(-1,12)

 $listen_port = GUICtrlCreateInput("",260,158,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Simulate_Client_IP:",20,200,150,Default)
 GUICtrlSetFont(-1,12)
 $simulate_client_ip = _GUICtrlIpAddress_Create($client_gui, 175, 198,145)
 _GUICtrlIpAddress_SetFont($simulate_client_ip,Default,14)
 
 GUICtrlCreateLabel("Port:",360,200,60,Default)
 GUICtrlSetFont(-1,12)
 $simulate_client_port = GUICtrlCreateInput("",410,198,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 GUICtrlCreateLabel("Simulate_Server_IP:",20,260,150,Default)
 GUICtrlSetFont(-1,12)
 $simulate_server_ip = _GUICtrlIpAddress_Create($client_gui, 175, 258,145)
 _GUICtrlIpAddress_SetFont($simulate_server_ip,Default,14)
 
 GUICtrlCreateLabel("Port:",360,260,60,Default)
 GUICtrlSetFont(-1,12)
 $simulate_server_port = GUICtrlCreateInput("",410,258,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Simulate_Client_Count:",20,320,175,Default)
 GUICtrlSetFont(-1,12)
 ;这个值的范围待商榷
 $simulate_client_count = GUICtrlCreateInput("",200,317,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Connect_Per_Sec:",270,320,130,Default)
 GUICtrlSetFont(-1,12)
 $connect_per_sec = GUICtrlCreateInput("",410,317,60,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Loop_Count:",20,380,85,Default)
 GUICtrlSetFont(-1,12)
 $loop_count = GUICtrlCreateInput("",110,377,50,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,5)
 
 GUICtrlCreateLabel("Loop_Start_Sequence:",170,380,160,Default)
 GUICtrlSetFont(-1,12)
 $sequence = GUICtrlCreateInput("",340,377,130,25)
 GUICtrlSetFont(-1,12)
 
 GUICtrlCreateLabel("Think_Time(ms):",20,440,120,Default)
 GUICtrlSetFont(-1,12)
 $think_time = GUICtrlCreateInput("",170,437,50,25)
 GUICtrlSetFont(-1,12)
 GUICtrlSetLimit(-1,4)
 
 GUICtrlCreateLabel("Run_Time(sec):",270,440,110,Default)
 GUICtrlSetFont(-1,12)
 $run_time = GUICtrlCreateInput("",410,437,60,25)
 GUICtrlSetFont(-1,12)
 
 GUICtrlCreateLabel("PcapFile   :",20,500,100,Default)
 GUICtrlSetFont(-1,12)
 $pcapfile = GUICtrlCreateInput("",155,497,315,25)
 GUICtrlSetFont(-1,12)
 
 $submit_btn = GUICtrlCreateButton("Submit",200,540,70,30)
 GUICtrlSetFont(-1,12)
 $reset_btn = GUICtrlCreateButton("Reset",300,540,70,30)
 GUICtrlSetFont(-1,12)
 $close_btn = GUICtrlCreateButton("Close",400,540,70,30)
 GUICtrlSetFont(-1,12)
 GUISetState()
 While 1
  $msg = GUIGetMsg()
  Select
   Case $msg = $submit_btn    
    If StringCompare(_check_file(GUICtrlRead($meter_client)),"yes") == 0 Then
     $a_client[0] = GUICtrlRead($meter_client)
    ElseIf StringCompare(_check_file(GUICtrlRead($meter_client)),"no") == 0 Then
     MsgBox(0,"WRONG","给定的Meter-Client-Path路径下,没有对应的文件,请确认")
     ContinueLoop
    Else
     MsgBox(0,"ERROR","机器已被病毒入侵,5秒后将关闭程序。",5)
     Exit
    EndIf
    If StringCompare(_check_file(GUICtrlRead($socket_client)),"yes") == 0 Then
     $a_client[1] = GUICtrlRead($socket_client)
    ElseIf StringCompare(_check_file(GUICtrlRead($socket_client)),"no") == 0 Then
     MsgBox(0,"WRONG","给定的Socket-Client-Path路径下,没有对应的文件,请确认")
     ContinueLoop
    Else
     MsgBox(0,"ERROR","机器已被病毒入侵,5秒后将关闭程序。",5)
     Exit
    EndIf
    If StringCompare(StringStripWS(_GUICtrlIpAddress_Get($server_ip),8),"0.0.0.0") == 0 Or StringLen(StringStripWS(_GUICtrlIpAddress_Get($server_ip),8)) == 7 Then
     MsgBox(0,"WRONG","给出的Server-IP不应为" & _GUICtrlIpAddress_Get($server_ip) & "请重置")
     ContinueLoop
    Else
     $a_client[2] = StringStripWS(_GUICtrlIpAddress_Get($server_ip),8)
    EndIf
    
    If StringRegExp(GUICtrlRead($server_port),"^[1-9][0-9]{0,}",0) Then
     $a_client[3] = GUICtrlRead($server_port)
    Else
     MsgBox(0,"WRONG","请对Server-Port输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    
    If StringRegExp(GUICtrlRead($listen_port),"^[1-9][0-9]{0,}",0) Then
     $a_client[4] = GUICtrlRead($listen_port)
    Else
     MsgBox(0,"WRONG","请对Listen-Port输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    
    If StringCompare(StringStripWS(_GUICtrlIpAddress_Get($simulate_client_ip),8),"0.0.0.0") == 0 Or StringLen(StringStripWS(_GUICtrlIpAddress_Get($simulate_client_ip),8)) == 7 Then
     MsgBox(0,"WRONG","给出的Simulate-Client-IP不应为" & _GUICtrlIpAddress_Get($simulate_client_ip) & "请重置")
     ContinueLoop
    Else
     $a_client[5] = StringStripWS(_GUICtrlIpAddress_Get($simulate_client_ip),8)
    EndIf
    
    If StringRegExp(GUICtrlRead($simulate_client_port),"^[1-9][0-9]{0,}",0) Then
     $a_client[6] = GUICtrlRead($simulate_client_port)
    Else
     MsgBox(0,"WRONG","请对Simulate-Client-Port输入首字母不为0的数字。")
     ContinueLoop
    EndIf

    If StringCompare(StringStripWS(_GUICtrlIpAddress_Get($simulate_server_ip),8),"0.0.0.0") == 0 Or StringLen(StringStripWS(_GUICtrlIpAddress_Get($simulate_server_ip),8)) == 7 Then
     MsgBox(0,"WRONG","给出的Simulate-Server-IP不应为" & _GUICtrlIpAddress_Get($simulate_server_ip) & "请重置")
     ContinueLoop
    Else
     $a_client[7] = StringStripWS(_GUICtrlIpAddress_Get($simulate_server_ip),8)
    EndIf
    
    If StringRegExp(GUICtrlRead($simulate_server_port),"^[1-9][0-9]{0,}",0) Then
     $a_client[8] = GUICtrlRead($simulate_server_port)
    Else
     MsgBox(0,"WRONG","请对Simulate-Server-Port输入首字母不为0的数字。")
     ContinueLoop
    EndIf

    If StringRegExp(GUICtrlRead($simulate_client_count),"^[1-9][0-9]{0,}",0) Then
     $a_client[9] = GUICtrlRead($simulate_client_count)
    Else
     MsgBox(0,"WRONG","请对Simulate_Client_Count输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    If StringRegExp(GUICtrlRead($connect_per_sec),"^[1-9][0-9]{0,}",0) Then
     $a_client[10] = GUICtrlRead($connect_per_sec)
    Else
     MsgBox(0,"WRONG","请对Connect_Per_Sec输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    If StringRegExp(GUICtrlRead($loop_count),"^[1-9][0-9]{0,}",0) Then
     $a_client[11] = GUICtrlRead($loop_count)
    Else
     MsgBox(0,"WRONG","请对Loop_Count输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    If StringRegExp(GUICtrlRead($sequence),"^[1-9][0-9]{0,}",0) Then
     $a_client[12] = GUICtrlRead($sequence)
    Else
     MsgBox(0,"WRONG","请对Loop_Start_Sequence输入首字母不为0的数字。")
     ContinueLoop
    EndIf

    If StringRegExp(GUICtrlRead($think_time),"^[1-9][0-9]{0,}",0) Then
     $a_client[13] = GUICtrlRead($think_time)
    Else
     MsgBox(0,"WRONG","请对Think_Time(ms)输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    If StringRegExp(GUICtrlRead($run_time),"^[1-9][0-9]{0,}",0) Then
     $a_client[14] = GUICtrlRead($run_time)
    Else
     MsgBox(0,"WRONG","请对Run_Time(sec)输入首字母不为0的数字。")
     ContinueLoop
    EndIf
    If StringCompare(_check_file(GUICtrlRead($pcapfile)),"yes") == 0 Then
     $a_client[15] = GUICtrlRead($pcapfile)
    ElseIf StringCompare(_check_file(GUICtrlRead($pcapfile)),"no") == 0 Then
     MsgBox(0,"WRONG","给定的PcapFile路径下,没有对应的文件,请确认")
     ContinueLoop
    Else
     MsgBox(0,"ERROR","机器已被病毒入侵,5秒后将关闭程序。",5)
     Exit
    EndIf
    
    If StringInStr(_check_client_parameter(),"-") Then
     $return = MsgBox(33,"WARNING","检查到当前输入的值与第 " & _check_client_parameter() & _
     " 次的值相同" & @CRLF & "请确认是否继续输入")
     If $return == 1 Then
;~       Nothing
     ElseIf $return == 2 Then
      ContinueLoop
     Else
      MsgBox(0,"ERROR","机器已被病毒入侵,5秒后将关闭程序。",5)
      Exit
     EndIf
    EndIf
;~     写入配置数据
    FileWriteLine(@ScriptDir & "\___client.config","<" & $client_num & ">")
    FileWriteLine(@ScriptDir & "\___client.config","meter_client=>" & GUICtrlRead($meter_client))
    FileWriteLine(@ScriptDir & "\___client.config","socket_client=>" & GUICtrlRead($socket_client))
    FileWriteLine(@ScriptDir & "\___client.config","server_ip=>" & _GUICtrlIpAddress_Get($server_ip))
    FileWriteLine(@ScriptDir & "\___client.config","server_port=>" & GUICtrlRead($server_port))
    FileWriteLine(@ScriptDir & "\___client.config","listen_port=>" & GUICtrlRead($listen_port))
    FileWriteLine(@ScriptDir & "\___client.config","simulate_client_ip=>" & _GUICtrlIpAddress_Get($simulate_client_ip))
    FileWriteLine(@ScriptDir & "\___client.config","simulate_client_port=>" & GUICtrlRead($simulate_client_port))
    FileWriteLine(@ScriptDir & "\___client.config","simulate_server_ip=>" & _GUICtrlIpAddress_Get($simulate_server_ip))
    FileWriteLine(@ScriptDir & "\___client.config","simulate_server_port=>" & GUICtrlRead($simulate_server_port))
    FileWriteLine(@ScriptDir & "\___client.config","simulate_client_count=>" & GUICtrlRead($simulate_client_count))
    FileWriteLine(@ScriptDir & "\___client.config","connect_per_sec=>" & GUICtrlRead($connect_per_sec))
    FileWriteLine(@ScriptDir & "\___client.config","loop_count=>" & GUICtrlRead($loop_count))
    FileWriteLine(@ScriptDir & "\___client.config","sequence=>" & GUICtrlRead($sequence))
    FileWriteLine(@ScriptDir & "\___client.config","think_time=>" & GUICtrlRead($think_time))
    FileWriteLine(@ScriptDir & "\___client.config","run_time=>" & GUICtrlRead($run_time))
    FileWriteLine(@ScriptDir & "\___client.config","pcapfile=>" & GUICtrlRead($pcapfile))
    
    FileWriteLine(@ScriptDir & "\___client.config","</" & $client_num & ">")
    
    $client[$client_num][0]=GUICtrlRead($meter_client)
    $client[$client_num][1]=GUICtrlRead($socket_client)
    $client[$client_num][2]=_GUICtrlIpAddress_Get($server_ip)
    $client[$client_num][3]=GUICtrlRead($server_port)
    $client[$client_num][4]=GUICtrlRead($listen_port)
    $client[$client_num][5]=_GUICtrlIpAddress_Get($simulate_client_ip)
    $client[$client_num][6]=GUICtrlRead($simulate_client_port)
    $client[$client_num][7]=_GUICtrlIpAddress_Get($simulate_server_ip)
    $client[$client_num][8]=GUICtrlRead($simulate_server_port)
    $client[$client_num][9]=GUICtrlRead($simulate_client_count)
    $client[$client_num][10]=GUICtrlRead($connect_per_sec)
    $client[$client_num][11]=GUICtrlRead($loop_count)
    $client[$client_num][12]=GUICtrlRead($sequence)
    $client[$client_num][13]=GUICtrlRead($think_time)
    $client[$client_num][14]=GUICtrlRead($run_time)
    $client[$client_num][15]=GUICtrlRead($pcapfile)
    
    $client_num = $client_num + 1
   Case $msg = $reset_btn
    GUICtrlSetData($meter_client,"")
    GUICtrlSetData($socket_client,"")
    _GUICtrlIpAddress_Destroy($server_ip)
    $server_ip = _GUICtrlIpAddress_Create($client_gui, 155, 118,145)
    _GUICtrlIpAddress_SetFont($server_ip,Default,14)
    GUICtrlSetData($server_port,"")
    GUICtrlSetData($listen_port,"")
    _GUICtrlIpAddress_Destroy($simulate_client_ip)
    $simulate_client_ip = _GUICtrlIpAddress_Create($client_gui, 175, 198,145)
    _GUICtrlIpAddress_SetFont($simulate_client_ip,Default,14)
    GUICtrlSetData($simulate_client_port,"")
    _GUICtrlIpAddress_Destroy($simulate_server_ip)
    $simulate_server_ip = _GUICtrlIpAddress_Create($client_gui, 175, 258,145)
    _GUICtrlIpAddress_SetFont($simulate_server_ip,Default,14)
    GUICtrlSetData($simulate_server_port,"")
    GUICtrlSetData($simulate_client_count,"")
    GUICtrlSetData($connect_per_sec,"")
    GUICtrlSetData($loop_count,"")
    GUICtrlSetData($sequence,"")
    GUICtrlSetData($think_time,"")
    GUICtrlSetData($run_time,"")
    GUICtrlSetData($pcapfile,"")
   Case $msg = $close_btn
    ExitLoop
  EndSelect
 WEnd
 GUIDelete($client_gui)
EndFunc
;~ 作者:wozijisunfly
;~ 创建时间:2014-09-28
;~ 功能:主运行程序
;~ 修改人:
;~ 修改内容:
;~ 修改时间:
Func _main()
 _create_gui()
EndFunc


;~ 运行
_main()





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值