示例#1
0
    def startPing():
        ping_parser = pingparsing.PingParsing()
        transmitter = pingparsing.PingTransmitter()
        transmitter.destination = ping_addr
        print(getTime() + "\tStarting ping test #" + str(i) +
              " with destination: " + transmitter.destination)
        #transmitter.count = 10
        transmitter.deadline = duration
        result = transmitter.ping()
        json.dumps(ping_parser.parse(result).as_dict(), indent=4)

        destination = ping_parser.destination
        transmitted_pkt = ping_parser.packet_transmit
        received_pkts = ping_parser.packet_receive
        lost_pkts = ping_parser.packet_loss_count
        pkt_loss_rate = ping_parser.packet_loss_rate
        rtt_min = ping_parser.rtt_min
        rtt_avg = ping_parser.rtt_avg
        rtt_max = ping_parser.rtt_max
        rtt_mdev = ping_parser.rtt_mdev
        pkt_duplicate = ping_parser.packet_duplicate_count
        pkt_duplicate_rate = ping_parser.packet_duplicate_rate

        #store results in DB.
        sql = (
            "INSERT INTO ping_results (test_id, attack_frame_rate, destination, transmitted_pkt, received_pkts, lost_pkts, pkt_loss_rate, rtt_min, rtt_avg, rtt_max, rtt_mdev, pkt_duplicate, pkt_duplicate_rate, duration, exp_start_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
        )
        values = (test_id, attack_frame_rate, destination, transmitted_pkt,
                  received_pkts, lost_pkts, pkt_loss_rate, rtt_min, rtt_avg,
                  rtt_max, rtt_mdev, pkt_duplicate, pkt_duplicate_rate,
                  duration, exp_start_time)
        executeQuery(sql, values)
        print("end of ping\t" + getTime())
示例#2
0
def from_ping(target, count=10):
    """
    Collects latency data based on `ping`.

    :param target: destination host to ping
    :param count: number of pings to perform (default is 10)
    :return: latency data
    """

    transmitter = pingparsing.PingTransmitter()
    transmitter.destination_host = target
    transmitter.count = count

    parser = pingparsing.PingParsing()

    try:
        raw_result = parser.parse(transmitter.ping())
        result = raw_result.as_dict()

        return Latency(
            target=target,
            loss=result['packet_loss_rate'],
            average=result['rtt_avg'],
            minimum=result['rtt_min'],
            maximum=result['rtt_max']
        )
    except (KeyboardInterrupt, SystemExit):
        raise
    except:
        return None
示例#3
0
def ping(target):
    # https://pypi.org/project/pingparsing/
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = target
    transmitter.count = num_of_ping

    output = json.dumps(ping_parser.parse(transmitter.ping()).as_dict(),
                        indent=4)
    '''
    "destination": "8.8.8.8",
    "packet_transmit": 10,
    "packet_receive": 10,
    "packet_loss_count": 0,
    "packet_loss_rate": 0.0,
    "rtt_min": 15.132,
    "rtt_avg": 19.378,
    "rtt_max": 27.466,
    "rtt_mdev": 3.695,
    "packet_duplicate_count": 0,
    "packet_duplicate_rate": 0.0
    '''
    rtt_min = json.loads(output)['rtt_min']
    rtt_avg = json.loads(output)['rtt_avg']
    rtt_max = json.loads(output)['rtt_max']
    packet_loss = json.loads(output)['packet_loss_rate']
    return (rtt_min, rtt_avg, rtt_max, packet_loss)
示例#4
0
def ping_from_ns(namespace):
    namespace = util.process_namespace(namespace, allow_none=True)

    dest = request.args.get("destination")

    if app.simulate:
        if dest == "1.1.1.1":
            return jsonify(
                {
                    "destination": "1.1.1.1",
                    "packet_duplicate_count": 0,
                    "packet_duplicate_rate": 0,
                    "packet_loss_count": 0,
                    "packet_loss_rate": 0,
                    "packet_receive": 4,
                    "packet_transmit": 4,
                    "rtt_avg": 5.472,
                    "rtt_max": 10.635,
                    "rtt_mdev": 3.171,
                    "rtt_min": 2.533,
                }
            )
        else:
            return jsonify({})
    else:
        ping_parser = pingparsing.PingParsing()
        try:
            result = util.run_in_ns(namespace, ["ping", "-c", "4", "-i", "0.2", dest])
            return jsonify(ping_parser.parse(result).as_dict())
        except subprocess.CalledProcessError as e:
            LOGGER.exception("status: %s, out: %s, err: %s", e.returncode, e.stdout, e.stderr)
            return jsonify({})
示例#5
0
def parse_ping(logger, dest_or_file, interface):

    data = dest_or_file.split(",")
    transmitter = pingparsing.PingTransmitter()
    if len(data) > 0:
        transmitter.destination_host = data[0]
    else:
        transmitter.destination_host = "localhost"
    transmitter.interface = interface

    if len(data) > 1:
        transmitter.tos = data[1]
    else:
        transmitter.tos = 0

    if len(data) > 2:
        transmitter.packet_size = data[2]
    else:
        transmitter.packet_size = 56

    if len(data) > 3:
        transmitter.count = data[3]
    else:
        transmitter.count = 3

    result = transmitter.ping()
    ping_result_text = result.stdout

    if result.returncode != 0:
        logger.error(result.stderr)

    ping_parser = pingparsing.PingParsing()
    ping_parser.parse(ping_result_text)

    return (dest_or_file, ping_parser.as_dict())
示例#6
0
def pingparse(ip):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = ip
    transmitter.count = 5
    result = transmitter.ping()
    return ping_parser.parse(result).as_dict()
def ping(host: str) -> pingparsing.PingStats:
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = host
    transmitter.count = 2
    transmitter.timeout = 2000
    return ping_parser.parse(transmitter.ping())
示例#8
0
def _ping_host(host, pkts=10):
    ping = subprocess.Popen(['ping', '-c', str(pkts), '-i', '0.4', '-W',
                             '1', '-q', host], stdout=subprocess.PIPE)
    ping_parser = pingparsing.PingParsing()
    output = ping.stdout.read()
    result = ping_parser.parse(output.decode().replace('pipe 8\n', ''))
    return result.as_dict()
示例#9
0
def main():
    parser = pingparsing.PingParsing()
    stats = parser.parse(
        dedent(
            """\
        PING google.com (74.125.24.100) 56(84) bytes of data.
        [1524930937.003555] 64 bytes from 74.125.24.100: icmp_seq=1 ttl=39 time=148 ms
        [1524930937.787175] 64 bytes from 74.125.24.100: icmp_seq=2 ttl=39 time=137 ms
        [1524930938.787642] 64 bytes from 74.125.24.100: icmp_seq=3 ttl=39 time=137 ms
        [1524930939.787653] 64 bytes from 74.125.24.100: icmp_seq=4 ttl=39 time=136 ms
        [1524930940.788365] 64 bytes from 74.125.24.100: icmp_seq=5 ttl=39 time=136 ms

        --- google.com ping statistics ---
        5 packets transmitted, 5 received, 0% packet loss, time 4001ms
        rtt min/avg/max/mdev = 136.537/139.174/148.006/4.425 ms
        """
        )
    )

    print("[ping statistics]")
    print(json.dumps(stats.as_dict(), indent=4))

    print("\n[icmp reply]")
    for icmp_reply in stats.icmp_reply_list:
        print(icmp_reply)

    return 0
def check_ping(ip_address):

    # Get base ip address from full sensor path (e.g. rtsp://root:[email protected]/axis-media/media.amp)
    try:
        tmp1 = ip_address.split('@')
        tmp2 = tmp1[1].split('/')
        ip_address_base = tmp2[0]

    except:
        ip_address_base = ip_address
        pass

    ping_status = {'ping_status': False}
    response = subprocess.run(['ping', '-c 1', '-w 1', ip_address_base],
                              stdout=subprocess.PIPE,
                              encoding='UTF-8')

    # and then check the response...
    if response.returncode == 0:

        # Parse results
        ping_parser = pingparsing.PingParsing()
        ping_status = ping_parser.parse(response.stdout).as_dict()
        ping_status.update({'ping_status': True})

    return ping_status
示例#11
0
 def find_server_nearest(self):
     hosts = [
         "18.231.0.104",  ##San Paulo
         "18.203.250.214",  ##Ireland
         "13.125.116.112",  ##Seoul
         "52.66.248.28"
     ]  ##Mumbai
     # hosts = ["www.google.com",  ##San Paulo
     #          "www.facebook.com",  ##Ireland
     #          "www.bing.com",  ##Seoul
     #          "www.baidu.com"]  ##Mumbai
     rtt = 10000
     index = 0
     ping_parser = pingparsing.PingParsing()
     transmitter = pingparsing.PingTransmitter()
     for i in range(len(hosts)):
         print(i)
         transmitter.destination_host = hosts[i]
         transmitter.count = 10
         result = transmitter.ping()
         t = ping_parser.parse(result).as_dict()["rtt_avg"]
         print(t)
         if t < rtt:
             rtt = t
             index = i
     print(hosts[index])
     print(rtt)
     return index
示例#12
0
def parse_ping(logger, dest_or_file, interface, count, deadline, is_parse_icmp_reply):
    if os.path.isfile(dest_or_file):
        with open(dest_or_file) as f:
            ping_result_text = f.read()
    else:
        transmitter = pingparsing.PingTransmitter()
        transmitter.destination_host = dest_or_file
        transmitter.interface = interface
        transmitter.count = count
        transmitter.deadline = deadline
        transmitter.is_quiet = not is_parse_icmp_reply

        try:
            result = transmitter.ping()
        except CommandError as e:
            logger.error(e)
            sys.exit(e.errno)

        ping_result_text = result.stdout
        if result.returncode != 0:
            logger.error(result.stderr)

    ping_parser = pingparsing.PingParsing()
    stats = ping_parser.parse(ping_result_text)
    output = stats.as_dict()
    if is_parse_icmp_reply:
        output["icmp_reply"] = stats.icmp_reply_list

    return (dest_or_file, output)
示例#13
0
def srv_stats(item, rf_id, user_id, user_pass):
    #print(item)
    #print(threading.current_thread())
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination_host = item
    transmitter.count = 1
    result = transmitter.ping()
    if ping_parser.parse(result).as_dict()['rtt_avg'] is None:
        ping = -1
    else:
        ping = ping_parser.parse(result).as_dict()['rtt_avg']
    server_ping.labels(serverip=item).set(ping)
    total_url = "https://%s%sSystems/%s" % (item, red_fish_url, rf_id)
    session = requests.Session()
    session.mount('https://', HTTPAdapter(max_retries=connection_retry))
    try:
        data = session.get(total_url, auth=(user_id, user_pass), verify=False, timeout=connection_timeout)
    except requests.exceptions.RequestException as ex:
        print(ex)
    finally:
        stdout = json.loads(data.text)
        print(stdout)
        data_dict = {'Manufacturer': str(stdout['Manufacturer']),
                   'Status': str(stdout['Status']['Health']),
                   'Model': str(stdout['Model']),
                   'PowerState': str(stdout['PowerState']),
                   'hostName': str(stdout['HostName']),
                   'SerialNumber': str(stdout['SerialNumber'])}
        if 'SKU' in stdout:
            data_dict['SKU'] = str(stdout['SKU']) #service tag
        server_general.labels(serverip=item).info(data_dict)
示例#14
0
def main():
    options = parse_option()

    initialize_log_handler(options.log_level)

    logger = logbook.Logger("pingparsing cli")
    logger.level = options.log_level
    pingparsing.set_log_level(options.log_level)

    output = {}
    if is_use_stdin():
        from concurrent import futures

        pingparsing.set_log_level(options.log_level)

        max_workers = (multiprocessing.cpu_count() * 2
                       if options.max_workers is None else options.max_workers)
        count, deadline = get_ping_param(options)
        logger.debug("max-workers={}, count={}, deadline={}".format(
            max_workers, count, deadline))

        try:
            with futures.ProcessPoolExecutor(max_workers) as executor:
                future_list = []
                for dest_or_file in options.destination_or_file:
                    logger.debug("start {}".format(dest_or_file))
                    future_list.append(
                        executor.submit(
                            parse_ping,
                            logger,
                            dest_or_file,
                            options.interface,
                            count,
                            deadline,
                            options.icmp_reply,
                        ))

                for future in futures.as_completed(future_list):
                    key, ping_data = future.result()
                    output[key] = ping_data
        finally:
            logger.debug("shutdown ProcessPoolExecutor")
            executor.shutdown()
    else:
        ping_result_text = sys.stdin.read()
        ping_parser = pingparsing.PingParsing()
        stats = ping_parser.parse(ping_result_text)
        output = stats.as_dict()
        if options.icmp_reply:
            output["icmp_reply"] = stats.icmp_reply_list

    if options.indent <= 0:
        result = json.dumps(output)
    else:
        result = json.dumps(output, indent=options.indent)

    print_result(result)

    return 0
示例#15
0
def _ping_host(host, pkts=10):
    ping = subprocess.Popen(
        ['ping', '-c',
         str(pkts), '-i', '0.4', '-W', '1', '-q', host],
        stdout=subprocess.PIPE)
    ping_parser = pingparsing.PingParsing()
    ping_parser.parse(ping.stdout.read())
    return ping_parser.as_dict()
示例#16
0
文件: client1.py 项目: vjayd/serve
def get_ping_time(host):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = host
    transmitter.count = 10
    result = transmitter.ping()
    result = ping_parser.parse(result).as_dict()
    return result['rtt_avg']
示例#17
0
def get_ping_stats(destination = "localhost"):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination_host = destination
    transmitter.count = 3
    result = transmitter.ping()
    a = json.dumps(ping_parser.parse(result).as_dict(), indent=4)
    result = json.loads(a)
    return result
示例#18
0
    def get_ping_result(self, host, count=5):
        ping_parser = pingparsing.PingParsing()
        transmitter = pingparsing.PingTransmitter()
        transmitter.destination_host = host
        transmitter.count = count
        result = transmitter.ping()
        parse_result = ping_parser.parse(result).as_dict()

        return parse_result
示例#19
0
def icmp_ping(ip_to_ping, count, id_try):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = ip_to_ping
    transmitter.count = count
    result = transmitter.ping()
    stats = json.loads(
        json.dumps(ping_parser.parse(result).as_dict(), indent=4))
    return stats
示例#20
0
def ping_bench(dict, host):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = host
    transmitter.count = 6
    result = transmitter.ping()
    stats = ping_parser.parse(result)
    stats.icmp_replies
    dict['ping'] = stats.icmp_replies
示例#21
0
def check_ping(host):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = host
    transmitter.count = 10
    result = json.loads(json.dumps(ping_parser.parse(transmitter.ping()).as_dict(), indent=4))
    ping["packet_receive"] += result["packet_receive"]
    ping["packet_loss_count"] += result["packet_loss_count"]
    return (result["packet_receive"], result["packet_loss_count"])
示例#22
0
def ping_host(host: str):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = host
    transmitter.count = 10
    transmitter.timeout = TIMEOUT
    result = transmitter.ping()
    rtt_avg = ping_parser.parse(result).as_dict()["rtt_avg"]
    return host, rtt_avg
示例#23
0
def main():
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination_host = "google.com"
    transmitter.count = 10
    result = transmitter.ping()

    print(json.dumps(ping_parser.parse(result).as_dict(), indent=4))

    return result.returncode
示例#24
0
def startPing(ip):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.count = 1
    transmitter.destination_host = ip
    ping_res = transmitter.ping()
    if ping_res.returncode == 0:
        return ping_parser.parse(ping_res).as_dict()
    else:
        return None
示例#25
0
def main():
    options = parse_option()

    ping_parser = pingparsing.PingParsing()
    with open(options.file) as f:
        ping_parser.parse(f.read())

    examplecommon.print_ping_parser(ping_parser)

    return 0
示例#26
0
 def _ping(self, host, count):
     parsing = pingparsing.PingParsing()
     transmitter = pingparsing.PingTransmitter()
     transmitter.destination = host
     transmitter.count = count
     result = transmitter.ping()
     if result.returncode == 0:
         return parsing.parse(result).as_dict()
     else:
         return None
def ping_node(ip_addr):
    ping_parser = pp.PingParsing()
    transmitter = pp.PingTransmitter()
    transmitter.destination = ip_addr
    transmitter.count = 10
    result = transmitter.ping()
    try:
        return ping_parser.parse(result.stdout).as_dict()
    except:
        print(result)
        return None
示例#28
0
文件: utils.py 项目: MKSx/webshell
    def ping(dest):
        ping_parser = pingparsing.PingParsing()
        transmitter = pingparsing.PingTransmitter()
        transmitter.destination = dest
        transmitter.count = 1
        result = ping_parser.parse(transmitter.ping()).as_dict()

        if 'rtt_avg' in result:
            return result['rtt_avg']

        return None
示例#29
0
def ping_scan(host):
    ping_parser = pingparsing.PingParsing()
    transmitter = pingparsing.PingTransmitter()
    transmitter.destination = host
    transmitter.count = 5
    try:
        result = transmitter.ping()
        output = json.loads(json.dumps(ping_parser.parse(result).as_dict()))
        return output["rtt_max"] * 0.001
    except:
        pass
示例#30
0
def main():
    parser = pingparsing.PingParsing()
    parser.parse("""PING google.com (216.58.196.238) 56(84) bytes of data.

--- google.com ping statistics ---
60 packets transmitted, 60 received, 0% packet loss, time 59153ms
rtt min/avg/max/mdev = 61.425/99.731/212.597/27.566 ms
""")

    print(json.dumps(parser.as_dict(), indent=4))

    return 0