-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsyslog_receiver.py
More file actions
executable file
·38 lines (31 loc) · 1.28 KB
/
syslog_receiver.py
File metadata and controls
executable file
·38 lines (31 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python3
import socketserver
import datetime
import argparse
import logging
class SyslogUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
data = bytes.decode(self.request[0].strip())
socket = self.request[1]
print(datetime.datetime.now().strftime("%Y-%d-%m - %H:%M:%S"), "{} : ".format(self.client_address[0]),
str(data))
if log_file:
logging.info(str(data))
parser = argparse.ArgumentParser(description="Simple syslog message receiver")
parser.add_argument("--host", help="Hostname to listen on", default="0.0.0.0")
parser.add_argument("--port", help="Port to listen on", default=6656, type=int)
parser.add_argument("--file", help="also log to file")
if __name__ == "__main__":
args = parser.parse_args()
if "file" in args and args.file:
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s', datefmt='%Y-%d-%m - %H:%M:%S', filename=args.file, filemode='a')
log_file = True
else:
log_file = False
try:
server = socketserver.UDPServer((args.host, args.port), SyslogUDPHandler)
server.serve_forever(poll_interval=0.5)
except (IOError, SystemExit):
raise
except KeyboardInterrupt:
print("Crtl+C Pressed. Shutting down.")