def main(argv = sys.argv): parser = argparse.ArgumentParser(description = 'Periodically runs a ZMap scan') parser.add_argument('--zmap', '-z', metavar = 'BIN', dest = 'binary', type = str, default = ZMap.ZMAP_LOCATION, help = 'zmap location') parser.add_argument('--cooldown', '-c', metavar = 'SECONDS', dest = 'cooldown', type = int, default = 1) parser.add_argument('--nrounds', '-n', metavar = 'N', dest = 'nrounds', type = int, default = 30) parser.add_argument('--seed', '-s', metavar = 'X', dest = 'seed', type = int, default = None) parser.add_argument('--output-dir', '-o', metavar = 'DIR', dest = 'output_dir', type = str, default = 'scan_results') parser.add_argument('--logfile', '-l', metavar = 'FILENAME', dest = 'logfile') parser.add_argument('period', metavar = 'PERIOD', type = float) parser.add_argument('subnets', metavar = 'SUBNET', nargs = '+', type = str) args = parser.parse_args(argv[1:]) init_logfile(args) logger.info('CMDLINE: %s' % ' '.join(argv)) Utils.ensure_dir_exists(args.output_dir) run(args.output_dir, args.subnets, args.seed, args.cooldown, args.binary, args.period, args.nrounds) return 0
def get_output_dir(self, client_info): for account in client_info['device_info']['accounts']: if account['type'] == 'com.google': output_dir = os.path.join(self.server.output_dir, account['name']) Utils.ensure_dir_exists(output_dir) return output_dir return None
def __init__(self, server_address, output_dir, worker): self.logger = logging.getLogger('ProbeServer:%s' % server_address[1]) self.logger.info('init') Utils.ensure_dir_exists(output_dir) self.output_dir = output_dir self.logger.info('using output dir: %s' % self.output_dir) self.worker = worker SocketServer.TCPServer.__init__(self, server_address, ClientHandler)
def save_results(scan_files, output_dir): results_dir = os.path.join(output_dir, str(int(time.time()))) Utils.ensure_dir_exists(results_dir) logger.info('saving result to directory %s' % results_dir) for i, in_filepath in enumerate(scan_files): out_filepath = os.path.join(results_dir, 'ping_%s.gz' % i) try: Utils.gzip_file_to_file(in_filepath, out_filepath) except IOError as e: logger.error('failed to write result file %s (%s)' % (out_filepath, e)) raise e