Add simple client. Print server received messages.

This commit is contained in:
Ian Gulliver
2016-05-04 04:13:31 +00:00
parent 4f4fc9a092
commit 5e4ce142c3
2 changed files with 68 additions and 0 deletions

65
client/client.py Executable file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/python3
import argparse
import json
import socket
import time
from ws4py.client import threadedclient
parser = argparse.ArgumentParser(description='iconograph fetcher')
parser.add_argument(
'--server',
dest='server',
action='store',
required=True)
parser.add_argument(
'--https-ca-cert',
dest='https_ca_cert',
action='store',
required=True)
parser.add_argument(
'--https-client-cert',
dest='https_client_cert',
action='store',
required=True)
parser.add_argument(
'--https-client-key',
dest='https_client_key',
action='store',
required=True)
FLAGS = parser.parse_args()
class Client(threadedclient.WebSocketClient):
def Loop(self):
self.daemon = True
self.connect()
while True:
self.send(json.dumps({
'type': 'report',
'data': {
'hostname': socket.gethostname(),
'uptime_seconds': self._Uptime(),
},
}), False)
time.sleep(5.0)
def _Uptime(self):
with open('/proc/uptime', 'r') as fh:
return int(float(fh.readline().split(' ', 1)[0]))
def main():
ssl_options = {
'keyfile': FLAGS.https_client_key,
'certfile': FLAGS.https_client_cert,
'ca_certs': FLAGS.https_ca_cert,
}
client = Client('wss://%s/ws' % FLAGS.server, protocols=['http-only', 'chat'], ssl_options=ssl_options)
client.Loop()
if __name__ == '__main__':
main()