diff options
author | Jan Klass <kissaki@posteo.de> | 2021-03-14 19:15:52 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-14 19:15:52 +0300 |
commit | 2ebd4d05277690c397ff82f7dc8e07cda4118cbe (patch) | |
tree | dc6f0489f3cb642a8fedf5bf8a46dd61737f73fe | |
parent | 75e60224728eae2662a0d4b124b1d5ebe46d3914 (diff) | |
parent | 6080b3b2908773032d270a3865efbc1a52248430 (diff) |
Merge PR #32: Port ping script to Python 3, add custom formatting and optional verbosity
-rwxr-xr-x[-rw-r--r--] | Non-RPC/mumble-ping.py | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/Non-RPC/mumble-ping.py b/Non-RPC/mumble-ping.py index 47c0ee8..2d47587 100644..100755 --- a/Non-RPC/mumble-ping.py +++ b/Non-RPC/mumble-ping.py @@ -1,16 +1,21 @@ -#!/usr/bin/env python -# -*- coding: utf-8 +#!/usr/bin/env python3 # Based on pcgod's mumble-ping script found at http://0xy.org/mumble-ping.py. from struct import * +from string import Template import socket, sys, time, datetime if len(sys.argv) < 3: - print "Usage: %s <host> <port>" % sys.argv[0] + print(f"Usage: {sys.argv[0]} <host> <port> [<format>] [-v]") sys.exit() host = sys.argv[1] port = int(sys.argv[2]) +if len(sys.argv) > 3 and sys.argv[3] != '-v': + fmt = sys.argv[3] +else: + fmt = "Version $v, $u/$m Users, $p, $b" +verbose = '-v' in sys.argv s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.settimeout(1) @@ -21,22 +26,33 @@ s.sendto(buf, (host, port)) try: data, addr = s.recvfrom(1024) except socket.timeout: - print "%d:NaN:NaN" % (time.time()) + print(f"{time.time()}:NaN:NaN") sys.exit() -print "recvd %d bytes" % len(data) +if verbose: + print(f"recvd {len(data)} bytes") r = unpack(">bbbbQiii", data) -version = r[1:4] -# r[0,1,2,3] = version -# r[4] = ts -# r[5] = users -# r[6] = max users -# r[7] = bandwidth +version = '.'.join([str(v) for v in r[1:4]]) +ts = r[4] +users = r[5] +max_users = r[6] +bandwidth = f"{r[7] / 1000}kbit/s" ping = (datetime.datetime.now().microsecond - r[4]) / 1000.0 -if ping < 0: ping = ping + 1000 - -print "Version %d.%d.%d, %d/%d Users, %.1fms, %dkbit/s" % (version + (r[5], r[6], ping, r[7]/1000)) +if ping < 0: + ping = ping + 1000 +ping = f"{ping:.1f}ms" + +lut = { + 'v': version, + 't': ts, + 'u': users, + 'm': max_users, + 'p': ping, + 'b': bandwidth, +} +t = Template(fmt) +print(t.substitute(**lut)) |