Example #1
0
    def wireshark_capture_packet_success(self, flag_pid):
        """
        功能描述: 成功抓到报文关键字执行成功,报文为空,关键字执行失败.\n

        参数:\n
            flag_pid:   Start WireShark Capture关键字执行成功后的返回值

        返回值:无

        Example:
        |  Wireshark Capture Packet Success  |  ${flag_pid}  |
        """
        ret = None
        cls = self._current_remotelocal()

        if (isinstance(cls, Remote)):
            ret = auto_do_remote(cls)
        else:
            ret = cls.wireshark_capture_success(flag_pid)

        if IS_LOCAL and ret == WIRESHARK_NO_STOP:
            str_data = u"抓包服务器未停止,开始自动停止抓包服务器!"
            log.user_warn(str_data)

            self.stop_wireshark_capture(flag_pid)

            self.wireshark_capture_packet_success(flag_pid)
        else:
            return ret
Example #2
0
    def set_wireshark_install_path(self, wireshark_install_path=""):
        """
        功能描述:设置抓包电脑上wireshark的安装路径:

        参数:file_path: wireshark软件的安装路径
        """
        ret = WIRESHARK_FAIL
        if not wireshark_install_path:
            str_data = u"设置wirershark路径为空!"
        else:
            temp_wireshark_install_path = join(wireshark_install_path,
                                               "tshark.exe")
            if isfile(temp_wireshark_install_path):
                ret = WIRESHARK_SUCCESS
                self.wireshark_install_path = wireshark_install_path
                str_data = u"设置wirershark路径 %s 成功!" % wireshark_install_path
            else:
                str_data = u"设置wirershark路径 %s 不合法!" % wireshark_install_path

        if ret == WIRESHARK_FAIL:
            err_info = u"%s 将采用默认的wireshark安装路径!" % str_data
            log.user_warn(err_info)
            self.wireshark_install_path = self._get_default_install_path()
        else:
            log.user_info(str_data)
Example #3
0
    def del_file_in_ftp_client(self, filename):
        """
        功能描述:删除客户端本地的文件
        
        参数:
            filename: 表示要删除的文件名
        
        返回值:无,如果删除文件失败,则抛出错误
        
        Example:
        | del_file_in_ftp_client | test.txt |
        
        注意:如果文件不存在,则关键字认为是成功的;如果是文件夹,则关键字认为是失败的。
        
        """
        # Change by jxy ,3013/3/20,增加参数合法性判断
        if type(filename) is str:
            pass
        elif type(filename) is unicode:
            pass
        else:
            raise RuntimeError(u"传入的参数不是单个文件名,请传入单个文件名!")

        if not os.path.exists(filename):
            log.user_warn(u"不存在文件: %s" % filename)
            return
        if os.path.isdir(filename):
            raise RuntimeError(u"%s 是文件夹,请勿使用此关键字删除." % filename)
        try:
            os.remove(filename)
            log.user_info(u"删除本地文件:%s 成功." % filename)
        except Exception, e:
            raise RuntimeError(u"删除本地文件:%s 失败." % filename)
Example #4
0
    def removedir_in_ftp_client(self, dirname):
        """
        功能描述:删除客户端本地的文件夹
        
        参数:
            dirname:表示要删除的文件夹名
        
        返回值:无,如果删除文件夹失败,则抛出错误。
        
        Example:
        | removedir_in_ftp_client | test |
        
        注意:如果文件夹不存在,则关键字认为是成功的;如果是文件,则关键字认为是失败的。
        
        """
        if not os.path.exists(dirname):
            log.user_warn(u"不存在文件夹: %s" % dirname)
            return

        if os.path.isfile(dirname):
            raise RuntimeError(u"%s 是文件,请勿使用此关键字删除." % dirname)
        try:
            os.rmdir(dirname)
            log.user_info(u"删除本地文件夹:%s 成功." % dirname)
        except Exception, e:
            raise RuntimeError(u"删除本地文件夹:%s 失败." % dirname)
Example #5
0
    def stop_wireshark_capture(self, flag_pid):
        """
        功能描述: 停止当前网卡设备的抓包

        参数:
            flag_pid:   Start WireShark 关键字执行成功后的返回值
        """
        ret = WIRESHARK_SUCCESS
        ret_data = ""
        dict_data = self.dict_process_obj.get(flag_pid)

        if dict_data is None:
            str_warn = u"没有找到相应抓包服务器%s" % flag_pid
            log.user_warn(str_warn)
            ret_data = (None, "")

        elif dict_data.get("flag_stop"):
            str_data = u"%s该抓包服务器已停止过" % flag_pid
            log.user_info(str_data)
            ret_data = (None, "")

        else:
            ret, ret_data = self._stop_wireshark(dict_data)

        if dict_data and not dict_data.get("flag_stop"):
            dict_data["flag_stop"] = True
            self.dict_process_obj.update({flag_pid: dict_data})

        return ret, ret_data
Example #6
0
    def stop_udp_server(self):
        """
        功能描述:停止UDP Server
        
        参数:无
        
        Example:
        | Stop Udp Server |   |   |  | 
        """

        try:
            obj = self._current_remotelocal()
        except No_Remote_or_local_Exception:
            log.user_warn(u"UDP Server未开启,不需要停止!")
            return

        if (isinstance(obj, Remote)):
            auto_do_remote(obj)
        else:
            ret, log_data = obj.stop_udp_server()

            if ret == ATTUDPSERVER_SUC:
                log.user_info(log_data)
            else:
                raise RuntimeError(log_data)
Example #7
0
    def http_server_close_response_status_code(self):
        """
        功能描述:关闭状态码响应模块
        
        参数:无

        Example:
        | Http Server Close Response Status Code |
        """
        try:
            cls = self._get_current_object()
        except No_Remote_or_local_Exception:
            log.user_warn(u"HTTP服务器未开启,不能关闭状态码响应模块!")
            return
        
        if (isinstance(cls, Remote)):
            auto_do_remote(cls)
        else:
            #TODO
            #关闭状态码响应模块
            ret, log_data = cls.close_response_status_code()

            if ret == ATTTHTTPSERVER_SUC:
                log.user_info(u'关闭状态码响应模块成功')
                #log.user_info(log_data)
            else:
                log.user_info(u'关闭状态码响应模块失败')
                raise RuntimeError(log_data)
Example #8
0
    def http_server_set_client_authorization_type(self,type_string):
        """
        功能描述:设置客户端认证模式
        
        参数:
            type_string: 描述认证模式类型的字符串,有效取值为:BASIC或DIGEST,值不区分大小写;
        
        注意:
            BASIC类型表示只支持BASIC认证;默认客户端认证模式为BASIC类型;
            DIGEST类型表示只支持DIGEST认证;
            
        Example:
        | Http Server Set Client Authorization Type | BASIC |
        | Http Server Set Client Authorization Type | DIGEST |
        """
        try:
            cls = self._get_current_object()
        except No_Remote_or_local_Exception:
            log.user_warn(u"HTTP服务器未开启,不能设置客户端认证模式!")
            return
        
        if (isinstance(cls, Remote)):
            auto_do_remote(cls)
        else:
            #TODO
            #设置客户端认证模式
            ret, log_data = cls.set_client_authorization_type(type_string)

            if ret == ATTTHTTPSERVER_SUC:
                log.user_info(u'设置客户端认证模式成功')
                #log.user_info(log_data)
            else:
                log.user_info(u'设置客户端认证模式失败')
                raise RuntimeError(log_data)
Example #9
0
    def _stop_wireshark(self, dict_data):
        """
        """
        ret = WIRESHARK_SUCCESS
        ret_data = ""
        str_data = ""
        warn_data = ""
        packet_data = None  # 该值设为默认的None是对没有找到包和包为空做区别

        popen = dict_data.get("popen")
        file_path = dict_data.get("file_path")
        temp_packet_file_path = dict_data.get("temp_packet_file_path")
        popen_stdout_path = dict_data.get("popen_stdout_path")

        if popen.poll() == None:
            ret, str_data = self._stop_popen(popen, popen_stdout_path)
        else:
            pass

        # 读取数据包的数据内容,返回Robot本端
        if ret == WIRESHARK_SUCCESS:
            str_data = u"停止抓包服务器成功"
            if temp_packet_file_path and exists(temp_packet_file_path):
                try:
                    with open(temp_packet_file_path, "rb") as obj_file:
                        packet_data = base64.b64encode(obj_file.read())
                except Exception, e:
                    warn_data = u"获取抓包文件内容失败!失败信息:%s " % e
                    log.user_warn(warn_data)
            else:
                warn_data = u"未找到数据包文件!"
                log.user_warn(warn_data)
Example #10
0
    def http_server_close_check_authorization(self):
        """
        功能描述:关闭用户权限验证
        
        参数:无
        
        Example:
        | Http Server Close Check Authorization |
        """
        try:
            cls = self._get_current_object()
        except No_Remote_or_local_Exception:
            log.user_warn(u"HTTP服务器未开启,不能关闭用户权限验证!")
            return
        
        if (isinstance(cls, Remote)):
            auto_do_remote(cls)
        else:
            #TODO
            #关闭用户权限验证
            ret, log_data = cls.close_check_authorization()

            if ret == ATTTHTTPSERVER_SUC:
                #log.user_info(log_data)
                log.user_info(u'关闭用户权限验证模块成功')
            else:
                log.user_info(u'关闭用户权限验证模块失败')
                raise RuntimeError(log_data)
Example #11
0
 def http_server_unregister_user_account(self,uname):
     """
     功能描述:注销账户
     
     参数:
         uname:账户名称,用于唯一标识某一个账户;
     
     Example:
     | Http Server Unregister User Account | user1 |
     """
     #检查账户名称的合法性
     temp_uname=copy.deepcopy(uname)
     if isinstance(uname, unicode):
         temp_uname=temp_uname.encode('utf-8')
     
     try:
         cls = self._get_current_object()
     except No_Remote_or_local_Exception:
         log.user_warn(u"HTTP服务器未开启,不能注销账户!")
         return
     
     if (isinstance(cls, Remote)):
         auto_do_remote(cls)
     else:
         #TODO
         #注销用户
         ret, log_data = cls.unregister_user_account(uname)
         
         if ret == ATTTHTTPSERVER_SUC:
             #log.user_info(u'注销访问HTTP服务器账号成功')
             log.user_info(log_data)
         else:
             log.user_info(u'注销访问HTTP服务器账号失败')
             raise RuntimeError(log_data)
Example #12
0
 def stop_http_server(self):
     """
     功能描述:停止HTTP服务器
     
     参数:无
     
     Example:
     | Stop Http Server |
     """
     try:
         cls = self._get_current_object()
     except No_Remote_or_local_Exception:
         log.user_warn(u"HTTP服务器未开启,不需要停止!")
         return
     
     if (isinstance(cls, Remote)):
         auto_do_remote(cls)
     else:
         #停止HTTP服务器
         ret, log_data=cls.stop_httpservet()
         
         if ret == ATTTHTTPSERVER_SUC:
             log.user_info(u"停止HTTP服务器成功")
         else:
             log.user_info(u"停止HTTP服务器失败")
             raise RuntimeError(log_data)
Example #13
0
 def set_tcp_src_addr(self, port, ip="0.0.0.0"):
     """
     功能描述:设置tcp报文的源IP和源端口,在需要指定发送报文的源端口时使用
     
     参数:
         port: 发送的TCP报文的源端口
         
         ip:  发送的TCP报文的源IP, 默认为"0.0.0.0"
     
     Example:
     | Set Tcp Src Addr | 50000  |              |
     | Set Tcp Src Addr | 50000  | 10.10.10.10  |
     """
     
     # 检查IP地址合法性
     if not check_ipaddr_validity(ip):
         raise RuntimeError(u"关键字执行失败,IP地址为非法地址!")
     
     # 检查port端口合法性
     ret, ret_str = check_port(port)
     if ret == ATTCOMMONFUN_FAIL:
         raise RuntimeError(ret_str)
     
     try:
         obj = self._current_remotelocal()
     except No_Remote_or_local_Exception:
         log.user_warn(u"TCP Client未初始化,不能设置源地址!")
         return
     
     if (isinstance(obj, Remote)):
         auto_do_remote(obj)
     else:
         obj.set_tcp_src_addr(port, ip)
Example #14
0
    def _get_packet_file_path(self, tuple_data):
        """
        功能描述:获取默认的抓包文件保存的路径

        参数:tuple_data  (prefix, file_path)

        返回:file_path or error_message

        """
        ret = FLAG_SUCCEED
        ret_data = ""
        prefix = tuple_data[0]
        file_path = tuple_data[1]

        for i in [1]:
            try:
                # 根据用户输入组建文件名
                file_name = "%s_%s.pcap" % (prefix, get_time_stamp())

                # 对用户输入的文件路径做检查
                if isdir(file_path):
                    file_path = join(file_path, file_name)

                elif isfile(file_path):
                    file_path = join(dirname(file_path), file_name)

                elif file_path == "default":
                    pass
                else:
                    try:
                        drive_name = os.path.splitdrive(file_path)[0]
                        if exists(drive_name):
                            os.mkdir(file_path)
                            str_data = u"输入的路径不存在,创建新的目录 %s 成功!" % file_path
                            file_path = join(file_path, file_name)
                        else:
                            str_data = u"输入的路径 %s 盘符不合法或者没有包含盘符,将使用默认路径!" % file_path
                            log.user_warn(str_data)
                            file_path = "default"
                    except Exception, e:
                        err_info = u"输入的路径 %s 不存在,创建新目录失败,失败原因:%s\n将使用默认路径!" % (
                            file_path, e)
                        log.user_warn(err_info)
                        file_path = "default"

                if file_path == "default":
                    ret, ret_data = self._get_default_file_path(file_name)

            except Exception, e:
                ret = FLAG_FAIL
                ret_data = u"设置报文文件保存的路径发生异常,错误信息为:%s" % e
Example #15
0
    def makedir_in_ftp_site(self, dirname):
        """
        功能描述:在服务器上的新建文件夹。
        
        参数:
            dirname:目录名
        
        返回值:无,关键字失败则抛出错误
        
        Example:
        | makedir_in_ftp_site | 测试目录 |
        
        注意:如果服务器上有同名的文件夹存在,则服务器会返回550 exists,
        
              这种情况下关键字认为新建目录也是成功的。
              
              不支持一次新建多个嵌套文件夹,如:test1\test2\test3\
        
        """
        #add by jias 20130808
        if not self.login:
            raise RuntimeError(u"请先登录FTP服务器")

        try:
            # GCW 20130306 更换ftpserver代码后无须关心编码,替换
            # GCW 20130312 更新服务器代码出现远端无法解析K歌.doc的问题,统一处理
            tmp_dirname = dirname
            if not isinstance(dirname, unicode):
                dirname = dirname.decode('utf-8')
            else:
                dirname = dirname.encode('utf-8')

            ret_info = self.ftp.mkd(dirname)
            # GCW END

            log.user_info(u"在FTP服务器上新建文件夹 %s 成功" % tmp_dirname)
        except Exception, e:
            # ret = "550 File exists."    #兼容172.24.11.10
            # ret2 = "550 %s: File exists" % dirname    #兼容python版本的FTP服务器
            # 为了兼容不同的服务器回复的不一致的情况,采用以下方法
            if '550' in e.message and 'exists' in e.message:
                log.user_warn(u"在FTP服务器上已经存在文件夹:%s ,无须新建!" % tmp_dirname)
            else:
                e.message = e.message.decode(self.ftp_server_encode)
                raise RuntimeError(u"在FTP服务器上新建文件夹:%s 失败。详细信息为:%s" %
                                   (tmp_dirname, e.message))
Example #16
0
    def wireshark_query_option_str_value(self,
                                         flag_pid,
                                         option_name_or_offset,
                                         read_filter=""):
        """

        功能描述: 查询抓到数据包中某个字段的值

        参数:\n
            flag_pid:                  Start WireShark Capture关键字执行成功后的返回值\n
            option_name_or_offset:     所要查询的字段名\n
            read_filter:               读取过滤器表达式\n

        返回值:\n
            list_data:       查询成功返回列表形式option_name字段值或None

        Example:
        | ${list_data}  | Wireshark Query Option Str Value  |  ${flag_pid}  |  ip.version    |  tcp   |
        | ${list_data}  | Wireshark Query Option Str Value  |  ${flag_pid}  |  frame[58:34]  |  tcp   |

        """
        ret = None
        cls = self._current_remotelocal()

        if (isinstance(cls, Remote)):
            ret = auto_do_remote(cls)
        else:
            ret = cls.wireshark_query_option_str_value(flag_pid,
                                                       option_name_or_offset,
                                                       read_filter)

        if IS_LOCAL and ret == WIRESHARK_NO_STOP:
            str_data = u"抓包服务器未停止,开始自动停止抓包服务器!"
            log.user_warn(str_data)

            self.stop_wireshark_capture(flag_pid)

            ret = self.wireshark_query_option_str_value(
                flag_pid, option_name_or_offset, read_filter)

        else:
            pass

        return ret
Example #17
0
    def http_server_set_response_status_code(self, status_code):
        """
        功能描述:设置响应状态码的值
        
        参数:
            status_code:设置HTTP状态码响应的值;
        
        Example:
        | Http Server Set Response Status Code | 403 |
        """
        
        #检查状态码的合法性
        temp_status_code=copy.deepcopy(status_code)
        if isinstance(status_code, unicode):
            temp_status_code=temp_status_code.encode('utf-8')
                
        try:
            cls = self._get_current_object()
        except No_Remote_or_local_Exception:
            log.user_warn(u"HTTP服务器未开启,不能设置响应状态码的值!")
            return
        
        if (isinstance(cls, Remote)):
            auto_do_remote(cls)
        else:
            #TODO
            #设置状态码的值
            ret, log_data = cls.set_response_status_code(status_code)

            if ret == ATTTHTTPSERVER_SUC:
                log.user_info(u'设置响应状态码的值成功')
                #log.user_info(log_data)
            else:
                log.user_info(u'设置响应状态码的值失败')
                
                if not temp_status_code.isdigit():
                    log_data=u"设置响应状态码的值失败,状态码响应的值非法!"
                else:
                    if int(temp_status_code) < 100 or int(temp_status_code)> 600:
                       log_data=u"设置响应状态码的值失败,状态码响应的值非法!"

                raise RuntimeError(log_data)
Example #18
0
    def stop_wireshark_capture(self, flag_pid):
        """
        功能描述: 停止当前网卡设备的抓包

        参数:\n
            flag_pid:   Start WireShark Capture关键字执行成功后的返回值

        返回值:无

        *注意:flag_pid传入为空或者None时不进行关闭动作。

        Example:
        |  ${flag_pid}            |  Start WireShark Capture  |          |  ATT  |
        |  Stop WireShark Capture |  ${flag_pid}              |
        """
        # 当同时开启多个抓包的时候会有抓不到包的情况,如果加1s延时效果好点 zsj2013/12/23
        if not self.flag_stop_all:
            time.sleep(1)

        cls = self.dict_all_capture_pid_and_cls.get(flag_pid)

        if not cls:
            str_warn = u"没有找到相应抓包服务器%s" % flag_pid
            log.user_warn(str_warn)
            return

        if (isinstance(cls, Remote)):
            ret, ret_data = auto_do_remote(cls)
        else:
            ret, ret_data = cls.stop_wireshark_capture(flag_pid)

            if not IS_LOCAL:  # 如果是如果不运行后面的保存文件等,直接返回
                return ret, ret_data

        # 根据停止返回的数据保存抓包文件
        if ret == WIRESHARK_SUCCESS:
            self._save_pcap_file_and_link_file(ret_data)

        # 删除已关闭的抓包服务器的存储
        if self.dict_all_capture_pid_and_cls.get(flag_pid):
            self.dict_all_capture_pid_and_cls.pop(flag_pid)
Example #19
0
    def stop_all_ftp_server(self):
        """
        功能描述:停止所有ftp服务器
        
        参数:无
        
        Example:
        | Stop All Ftp Server |   |   | 
        
        """
        alias_list = self.dict_alias.keys()

        if not alias_list:
            log.user_warn(u"没有ftp服务器对象,不需要关闭!")
            return

        for alias in alias_list:
            try:
                self.switch_ftp_server(alias)
                self.stop_ftp_server()
            except Exception, e:
                continue
Example #20
0
    def stop_ftp_server(self):
        """
        功能描述:停止ftp服务器
        
        参数:无
        
        Example:
        | Stop Ftp Server |   |   | 
        
        """
        try:
            cls = self._current_remotelocal()
        except No_Remote_or_local_Exception:
            #modified by jias
            #修改为 没初始化实例的时候,调用关闭不报错
            log.user_warn(u"FTP服务器未开启,不需要停止!")
            return

        if (isinstance(cls, Remote)):
            auto_do_remote(cls)
        else:
            cls.stop_ftp_server()
Example #21
0
 def makedir_in_ftp_client(self, dirname):
     """
     功能描述:新建客户端本地的文件夹
     
     参数:
         dirname:表示新建文件夹名
     
     返回值:无,如果新建文件夹失败,则抛出错误。
     
     Example:
     | makedir_in_ftp_client | test |
     
     注意:不支持一次新建多个嵌套文件夹,如:test1\test2\test3\
     """
     if os.path.exists(dirname):
         log.user_warn(u"已存在同名文件夹:%s,无须新建." % dirname)
         return
     try:
         os.mkdir(dirname)
         log.user_info(u"新建本地文件夹:%s 成功." % dirname)
     except Exception, e:
         raise RuntimeError(u"新建本地文件夹:%s 失败." % dirname)
Example #22
0
    def http_server_set_client_upload_type(self,type_string):
        """
        功能描述:设置客户端上传模式
        
        参数:
            type_string: 描述上传模式类型的字符串,有效取值为:POST或PUT或BOTH,值不区分大小写;
        
        注意:
            POST类型表示只支持POST上传;
            PUT类型表示只支持PUT上传;
            BOTH类型表示既支持POST上传也支持PUT上传;默认客户端上传模式为BOTH类型;
            
        Example:
        | Http Server Set Client Upload Type | POST |
        | Http Server Set Client Upload Type | PUT |
        | Http Server Set Client Upload Type | BOTH |
        """
        try:
            cls = self._get_current_object()
        except No_Remote_or_local_Exception:
            log.user_warn(u"HTTP服务器未开启,不能设置客户端上传模式!")
            return
        
        if (isinstance(cls, Remote)):
            auto_do_remote(cls)
        else:
            #TODO
            #设置客户端上传模式
            ret, log_data = cls.set_client_upload_type(type_string)

            if ret == ATTTHTTPSERVER_SUC:
                log.user_info(u'设置客户端上传模式成功')
                #log.user_info(log_data)
            else:
                log.user_info(u'设置客户端上传模式失败')
                raise RuntimeError(log_data)
Example #23
0
        """
        功能描述:停止所有本地和远端的HTTP服务器
        
        参数:无
        
        Example:
        | Stop All Http Server |
        """
        try:
            alias_list=self._get_object_alias_list()
        except Exception, e:
            error_info=u"停止所有本地和远端的HTTP服务器失败,获取HTTP服务器对象别名列表异常!"
            raise RuntimeError(error_info)

        if not alias_list:
            log.user_warn(u"没有HTTP服务器对象,不需要关闭!")
            return
        
        for alias in alias_list:
            try:
                self.switch_http_server(alias)
                self.stop_http_server()
            except Exception, e:
                error_info=u"停止HTTP服务器(alias=%s)失败" % alias
                raise RuntimeError(error_info)
            
        log.user_info(u'停止所有本地和远端的HTTP服务器成功')
        return

    
    def _remote_release_stop_all_http_server(self):
Example #24
0
                break

            try:
                link = utils.get_link_path(path, default_log_path)
                logger.info("Capture file saved to '<a href=\"%s\">%s</a>'." %
                            (link, path),
                            html=True)

                err_info = u"链接报文文件到log文件中成功!"
                log.user_info(err_info)
                return

            except Exception, e:
                err_info = u"在log文件中链接抓包文件发生异常: %s" % e

        log.user_warn(err_info)

    def _get_default_log_dir(self):
        """
        功能描述: 获取默认的log保存路径

        参数:无

        返回:
            ret       1 or -1 成功状态码
            ret_data  log保存路径 or 错误信息
        """
        ret = FLAG_SUCCEED
        ret_data = ""

        try:
Example #25
0
                              (tmp_del_file, ret_info))
            except Exception, e:
                # GCW20130217解决删除查到有文件夹同名,用户误用文件夹名去删除的问题,同时兼容测试网服务器
                # e = e.decode(self.ftp_server_encode).encode('utf-8')
                # raise RuntimeError(u"删除FTP服务器上的文件:%s 异常.错误信息:%s" % (del_file, e))
                if '550' in e.message and 'Permission denied' in e.message:
                    raise RuntimeError(u"待删除的 %s 不是一个文件,返回信息:%s " %
                                       (tmp_del_file, e))
                else:
                    e.message = e.message.decode(self.ftp_server_encode)
                    raise RuntimeError(u"在FTP服务器上删除文件:%s 异常.返回错误信息: %s " %
                                       (tmp_del_file, e.message))

        else:
            # 查到服务器上没有此文件,则不用删除
            log.user_warn(u"FTP服务器上没有要删除的文件: %s ." % del_file)

    def makedir_in_ftp_site(self, dirname):
        """
        功能描述:在服务器上的新建文件夹。
        
        参数:
            dirname:目录名
        
        返回值:无,关键字失败则抛出错误
        
        Example:
        | makedir_in_ftp_site | 测试目录 |
        
        注意:如果服务器上有同名的文件夹存在,则服务器会返回550 exists,
        
Example #26
0
            elif version < 8:
                flag_version = -1
                warn_data = u"WireShark软件版本为 %s 过低,请使用更高版本的WireShark版本,\
                            否则测试效果不好!" % self.wireshark_version
            elif version == 8:
                pass
            else:
                warn_data = u"判定WireShark库的版本信息 %s 不识别,将使用1.8.x版本做处理!\
                        错误信息:%s" % (self.wireshark_version, e)

        except Exception, e:
            warn_data = u"判定WireShark库的版本信息 %s 高低出错将使用1.8.x版本做处理!\
                        错误信息:%s" % (self.wireshark_version, e)

        if warn_data:
            log.user_warn(warn_data)

        return flag_version

    def _get_wireshark_version(self):
        """
        """
        ret = PARSE_PCAP_FILE_F
        wireshark_version = None
        err_data = ""

        if not self.wireshark_version:

            cmd = '"%s\\Tshark.exe" -h' % self.tshark_install_path

            try: