# # tshark module - refactored from test_scan.py # # Copyright (c) 2014, Qualcomm Atheros, Inc. # Copyright (c) 2015, Intel Mobile Communications GmbH # # This software may be distributed under the terms of the BSD license. # See README for more details. import time import subprocess import logging logger = logging.getLogger() _tshark_filter_arg = '-Y' def run_tshark(filename, filter, display=None, wait=True): global _tshark_filter_arg if wait: # wait a bit to make it more likely for wlantest sniffer to have # captured and written the results into a file that we can process here time.sleep(0.1) try: arg = [ "tshark", "-r", filename, _tshark_filter_arg, filter ] if display: arg.append('-Tfields') for d in display: arg.append('-e') arg.append(d) else: arg.append('-V') cmd = subprocess.Popen(arg, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except Exception, e: logger.info("Could run run tshark check: " + str(e)) cmd = None return None output = cmd.communicate() out = output[0] res = cmd.wait() if res == 1: if "Some fields aren't valid" in output[1]: raise Exception("Unknown tshark field") # remember this for efficiency _tshark_filter_arg = '-R' arg[3] = '-R' cmd = subprocess.Popen(arg, stdout=subprocess.PIPE, stderr=open('/dev/null', 'w')) out = cmd.communicate()[0] cmd.wait() return out