pythonモニタJuniper NetScreenファイアウォールsyslog


Juniper NetScreenファイアウォールに設定
SSG520-> set syslog config "10.10.14.20"SSG520-> set syslog enable SSG520-> get syslog Syslog Configuration: Hostname: 10.10.14.20 Host port: 514 Security Facility: local0 Facility: local0 Traffic log: disabled Event log: enabled Transport: udp Socket number: 265 module=system: emer, alert, crit, error, warn, notif, info, debug Traffic/IDP logs on backup device: disabled Syslog is enabled.
モニタ側pythonimport loggingimport socketserverimport threadingimport re
LOG_FILE = 'pysyslog.log'
logging.basicConfig(level=logging.INFO,format='%(message)s',datefmt='',filename=LOG_FILE,#logファイルfilemode='a')#追加モード
class SyslogUDPHandler(socketserver.BaseRequestHandler):def handle(self):
    data = bytes.decode(self.request[0].strip())  #     
    date = re.match('.*(\w+\s+\d+\s+\d+:\d+:\d+)\s+QYTISE.*', data)
    print("%s : " % self.client_address[0], str(data))  #   syslog  
    logging.info(str(data))  #    logging   

if name="main":try:HOST,PORT="0.0.0.0",514#ローカルアドレスとポートserver=socketserver.UDPServer((HOST,PORT),SyslogUDPHandler)#ローカルアドレス、ポート、syslog処理方法printをバインド(「Syslogサービスが有効になり、テキストファイルにログが書き込まれました!!」)server.serve_forever(poll_interval=0.5)#サーバの実行、ポーリング間隔
except (IOError, SystemExit):
    raise
except KeyboardInterrupt:  #   Ctrl+C,       
    print("Crtl+C Pressed. Shutting down.")

実行後にlogレコードを取得できます