mirror of
https://github.com/Dinnerbone/mcstatus.git
synced 2026-04-06 03:51:23 +08:00
43
cli.py
Normal file
43
cli.py
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from pprint import pprint
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
|
from minecraft_query import MinecraftQuery
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = ArgumentParser(description="Query status of Minecraft multiplayer server",
|
||||||
|
epilog="Exit status: 0 if the server can be reached, otherwise nonzero."
|
||||||
|
)
|
||||||
|
parser.add_argument("host", help="target hostname")
|
||||||
|
parser.add_argument("-q", "--quiet", action='store_true', default=False,
|
||||||
|
help='don\'t print anything, just check if the server is running')
|
||||||
|
parser.add_argument("-p", "--port", type=int, default=25565,
|
||||||
|
help='UDP port of server\'s "query" service [25565]')
|
||||||
|
parser.add_argument("-r", "--retries", type=int, default=3,
|
||||||
|
help='retry query at most this number of times [3]')
|
||||||
|
parser.add_argument("-t", "--timeout", type=int, default=10,
|
||||||
|
help='retry timeout in seconds [10]')
|
||||||
|
|
||||||
|
options = parser.parse_args()
|
||||||
|
|
||||||
|
try:
|
||||||
|
query = MinecraftQuery(options.host, options.port,
|
||||||
|
timeout=options.timeout,
|
||||||
|
retries=options.retries)
|
||||||
|
server_data = query.get_rules()
|
||||||
|
except socket.error as e:
|
||||||
|
if not options.quiet:
|
||||||
|
print "socket exception caught:", e.message
|
||||||
|
print "Server is down or unreachable."
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if not options.quiet:
|
||||||
|
print "Server response data:"
|
||||||
|
pprint(server_data)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__=="__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user