diff --git a/bin/rcon b/bin/rcon new file mode 100755 index 0000000..41c2705 --- /dev/null +++ b/bin/rcon @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +from sys import argv +from os.path import realpath, dirname +from shlex import quote +from bundlewrap.repo import Repository + +repo = Repository(dirname(dirname(realpath(__file__)))) + +if len(argv) == 1: + for node in repo.nodes: + for name in node.metadata.get('left4dead2/servers', {}): + print(name) + exit(0) + +server = argv[1] +command = argv[2] + +remote_code = """ +from rcon.source import Client + +with Client('127.0.0.1', {port}, passwd='''{password}''') as client: + response = client.run('''{command}''') + +print(response) +""" + +for node in repo.nodes: + for name, conf in node.metadata.get('left4dead2/servers', {}).items(): + if name == server: + response = node.run('python3 -c ' + quote(remote_code.format(port=conf['port'], password=conf['rcon_password'], command=command))) + print(response.stdout.decode())