52 lines · python
1#!/usr/bin/env python2from __future__ import absolute_import, division, print_function3import sys4from socket import *5from time import strftime6import datetime7 8 9def main():10 if len(sys.argv) < 4:11 print("completion_logger_server.py <listen address> <listen port> <log file>")12 exit(1)13 14 host = sys.argv[1]15 port = int(sys.argv[2])16 buf = 1024 * 817 addr = (host, port)18 19 # Create socket and bind to address20 UDPSock = socket(AF_INET, SOCK_DGRAM)21 UDPSock.bind(addr)22 23 print("Listing on {0}:{1} and logging to '{2}'".format(host, port, sys.argv[3]))24 25 # Open the logging file.26 f = open(sys.argv[3], "a")27 28 # Receive messages29 while 1:30 data, addr = UDPSock.recvfrom(buf)31 if not data:32 break33 else:34 f.write("{ ")35 f.write(36 '"time": "{0}"'.format(37 datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")38 )39 )40 f.write(', "sender": "{0}" '.format(addr[0]))41 f.write(', "data": ')42 f.write(data)43 f.write(" }\n")44 f.flush()45 46 # Close socket47 UDPSock.close()48 49 50if __name__ == "__main__":51 main()52