python 实现简单的SYSLOG服务器,并写入MYSQL数据库

  • 格式:doc
  • 大小:102.00 KB
  • 文档页数:3

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

import os,socket,sys,time,string

import MySQLdb

bufsize=1500

port=514

syslog_serverty={ 0:"emergency",

1:"alert",

2:"critical",

3:"error",

4:"warning",

5:"notice",

6:"info",

7:"debug"

}

syslog_facility={ 0:"kernel",

1:"user",

2:"mail",

3:"daemaon",

4:"auth",

5:"syslog",

6:"lpr",

7:"news",

8:"uucp",

9:"cron",

10:"authpriv",

11:"ftp",

12:"ntp",

13:"security",

14:"console",

15:"cron",

16:"local 0",

17:"local 1",

18:"local 2",

19:"local 3",

20:"local 4",

21:"local 5",

22:"local 6",

23:"local 7"

}

try:

sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) sock.bind(("0.0.0.0",port))

except:

print("error bind")

sys.exit(1)

sql_em="insert into emergency values(%s,%s,%s,%s,%s,%s)"

sql_al="insert into alert values(%s,%s,%s,%s,%s,%s)"

sql_cr="insert into critical values(%s,%s,%s,%s,%s,%s)"

sql_er="insert into error values(%s,%s,%s,%s,%s,%s)"

sql_wa="insert into warning values(%s,%s,%s,%s,%s,%s)"

conn=MySQLdb.connect(host="127.0.0.1",db="syslog",port=18888,user="root ",passwd="cinda")

curs=conn.cursor()

#f=file("syslog.txt","w")

print("----------------syslog is start----------------\n")

try:

while1:

try:

data,addr=sock.recvfrom(bufsize)

#print data,addr

syslog=str(data)

n=syslog.find('>')

serverty=string.atoi(syslog[1:n])&0x0007

facility=(string.atoi(syslog[1:n])&0x03f8)>>3

syslog_msg=syslog[26:]

dev_name=syslog_msg[:syslog_msg.find(' ')]

dev_msg=syslog_msg[syslog_msg.find(' '):]

param=(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()),dev_na me,addr[0],syslog_facility[facility],syslog_serverty[serverty],dev_msg)

if serverty==0:

curs.execute(sql_em,param)

print syslog_msg

elif serverty==1:

curs.execute(sql_al,param)

print syslog_msg

elif serverty==2:

curs.execute(sql_cr,param)

print syslog_msg

elif serverty==3:

curs.execute(sql_er,param)

print syslog_msg

elif serverty==4:

curs.execute(sql_wa,param)

print syslog_msg

mit()

#print dev_msg,time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) #print

syslog_serverty[serverty],syslog_facility[facility],syslog[26:] #f.writelines(syslog_serverty[serverty]+"

"+syslog_facility[facility]+" "+syslog[26:]+'\n')

except socket.error:

pass

except KeyboardInterrupt:

curs.close()

conn.close()

print("------------------syslogd stop-------------\n")

print"good bye"

sys.exit()

#f.close