| #!/usr/bin/env python |
| from __future__ import absolute_import, division, print_function |
| import sys |
| from socket import * |
| from time import strftime |
| import datetime |
| |
| def main(): |
| if len(sys.argv) < 4: |
| print("completion_logger_server.py <listen address> <listen port> <log file>") |
| exit(1) |
| |
| host = sys.argv[1] |
| port = int(sys.argv[2]) |
| buf = 1024 * 8 |
| addr = (host,port) |
| |
| # Create socket and bind to address |
| UDPSock = socket(AF_INET,SOCK_DGRAM) |
| UDPSock.bind(addr) |
| |
| print("Listing on {0}:{1} and logging to '{2}'".format(host, port, sys.argv[3])) |
| |
| # Open the logging file. |
| f = open(sys.argv[3], "a") |
| |
| # Receive messages |
| while 1: |
| data,addr = UDPSock.recvfrom(buf) |
| if not data: |
| break |
| else: |
| f.write("{ "); |
| f.write("\"time\": \"{0}\"".format(datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'))) |
| f.write(", \"sender\": \"{0}\" ".format(addr[0])) |
| f.write(", \"data\": ") |
| f.write(data) |
| f.write(" }\n") |
| f.flush() |
| |
| # Close socket |
| UDPSock.close() |
| |
| if __name__ == '__main__': |
| main() |