Exemple #1
0
    def start_capture(self,
                      override_configs=None,
                      additional_args=None,
                      duration=None,
                      packet_count=None):
        """See base class documentation
        """
        if self._process is not None:
            raise sniffer.InvalidOperationError(
                "Trying to start a sniff while another is still running!")
        capture_dir = os.path.join(self._logger.log_path,
                                   "Sniffer-{}".format(self._interface))
        os.makedirs(capture_dir, exist_ok=True)
        self._capture_file_path = os.path.join(
            capture_dir,
            "capture_{}.pcap".format(logger.get_log_file_timestamp()))

        self._pre_capture_config(override_configs)
        _, self._temp_capture_file_path = tempfile.mkstemp(suffix=".pcap")

        cmd = self._get_command_line(additional_args=additional_args,
                                     duration=duration,
                                     packet_count=packet_count)

        self._process = utils.start_standing_subprocess(cmd)
        return sniffer.ActiveCaptureContext(self, duration)
Exemple #2
0
 def stop_capture(self):
     """See base class documentation
     """
     if self._process is None:
         raise sniffer.InvalidOperationError(
             "Trying to stop a non-started process")
     utils.stop_standing_subprocess(self._process)
     self._post_process()
Exemple #3
0
 def wait_for_capture(self, timeout=None):
     """See base class documentation
     """
     if self._process is None:
         raise sniffer.InvalidOperationError(
             "Trying to wait on a non-started process")
     try:
         utils.wait_for_standing_subprocess(self._process, timeout)
         self._post_process()
     except subprocess.TimeoutExpired:
         self.stop_capture()