def main(argv = sys.argv): logging.basicConfig(format = '[%(levelname)s] %(message)s', level = logging.INFO) logger.info('CMDLINE %s' % ' '.join(argv)) print '# CMDLINE %s' % ' '.join(argv) parser = argparse.ArgumentParser() parser.add_argument('--ndevices', metavar = 'N', dest = 'ndevices', type = int, default = None) parser.add_argument('--has-timestamps', '-t', dest = 'has_timestamps', action = 'store_true', default = True) parser.add_argument('--use-initial', metavar = 'N', dest = 'use_initial', type = int, default = None) parser.add_argument('rtt_threshold', metavar = 'RTT_THRESHOLD', type = int) parser.add_argument('pings_file', metavar = 'PINGS_FILE', type = str) args = parser.parse_args(argv[1:]) for i, (IP, pings) in enumerate(ReadZMapScan.list_pings(args.pings_file, args.has_timestamps)): if args.ndevices > 0 and args.ndevices <= i: break print >> sys.stderr, '\r \rprocessing device %d' % (i + 1), ntransmitting = 0 for j, (ts, rtt, diff) in enumerate(pings): if args.use_initial > 0 and args.use_initial <= j: break if rtt < args.rtt_threshold: ntransmitting += 1 prob = ntransmitting / float(len(pings)) if args.use_initial: prob = ntransmitting / float(args.use_initial) print IP, prob print >> sys.stderr return 0
def main(argv = sys.argv): logging.basicConfig(format = '[%(levelname)s] %(message)s', level = logging.INFO) logger.info('CMDLINE %s' % ' '.join(argv)) print '# CMDLINE: %s' % ' '.join(argv) parser = argparse.ArgumentParser() parser.add_argument('--ndevices', metavar = 'N', dest = 'ndevices', type = int, default = None) parser.add_argument('--has-timestamps', '-t', dest = 'has_timestamps', action = 'store_true', default = True) parser.add_argument('--exclude-file', dest = 'exclude_file', type = str, default = None) parser.add_argument('--skip-initial', metavar = 'N', dest = 'skip_initial', type = int, default = None) parser.add_argument('--use-every', metavar = 'N', dest = 'use_every', type = int, default = None) parser.add_argument('rtt_threshold', metavar = 'RTT_THRESHOLD', type = int) parser.add_argument('npings', metavar = 'NPINGS', type = int) parser.add_argument('transmit_threshold', metavar = 'TRANSMIT_THRESHOLD', type = float) parser.add_argument('pings_file', metavar = 'PINGS_FILE', type = str) args = parser.parse_args(argv[1:]) exclude_set = read_exclude_file(args.exclude_file) transmitting = collections.defaultdict(set) nused = 0 for i, (IP, pings) in enumerate(ReadZMapScan.list_pings(args.pings_file, args.has_timestamps)): if args.ndevices and args.ndevices <= i: break print >> sys.stderr, '\r \r processing device %d' % (i + 1) if IP in exclude_set: continue nused += 1 for j, (ts, rtt, diff) in enumerate(pings): if args.skip_initial > 0 and j < args.skip_initial: continue if args.use_every > 0 and (j % args.use_every) != 0: continue try: nhigh = 0 for w in range(0, args.npings): _, rtt, _ = pings[j + w] if args.rtt_threshold < rtt: nhigh += 1 if args.transmit_threshold < nhigh: break else: transmitting[j].add(IP) print j, IP except IndexError: continue print >> sys.stderr always_transmitting = None for i, devices in sorted(transmitting.items()): if always_transmitting == None: always_transmitting = devices always_transmitting &= devices print i, len(devices), len(always_transmitting), len(always_transmitting) / float(nused) return 0