diff options
-rwxr-xr-x | Non-RPC/mumble-ping.py | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/Non-RPC/mumble-ping.py b/Non-RPC/mumble-ping.py index ba82b25..2d47587 100755 --- a/Non-RPC/mumble-ping.py +++ b/Non-RPC/mumble-ping.py @@ -2,14 +2,20 @@ # 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(f"Usage: {sys.argv[0]} <host> <port>") + 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) @@ -23,19 +29,30 @@ except socket.timeout: print(f"{time.time()}:NaN:NaN") sys.exit() -print(f"recvd {len(data)} bytes") +if verbose: + print(f"recvd {len(data)} bytes") r = unpack(">bbbbQiii", data) -version = r[1:4] +version = '.'.join([str(v) for v in r[1:4]]) ts = r[4] users = r[5] max_users = r[6] -bandwidth = r[7] +bandwidth = f"{r[7] / 1000}kbit/s" ping = (datetime.datetime.now().microsecond - r[4]) / 1000.0 if ping < 0: ping = ping + 1000 - -print(f"Version {'.'.join([str(v) for v in version])}, {users}/{max_users} Users, {ping:.1f}ms, {bandwidth / 1000}kbit/s") +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)) |