Python的 - 从系统日志文件中检索信息(Python - retrieving info fr

2019-10-20 12:02发布

我已要求写使用python的分配方案。

我一直在考虑一个syslog文件,我必须要找到的东西出来吧

如何找出作了多少次尝试登录到root帐户?

任何建议,将不胜感激,因为我很新的蟒蛇,完全丧失!

Answer 1:

这样的事情

#open the file , can be /var/log/messages, /var/log/maillog etc as defined in your system
f=open("mysyslogfile")
count=0 
#go through the file
for line in f:
   if "<unique pattern for checking root account login>" in line:
       count+=1
#close the file
f.close()
print "total count: " ,count


Answer 2:

你想/var/log/auth.log ,而不是系统日志。

它会含有像这样的线路:

Mar 20 10:47:24 Opus su[15918]: pam_unix(su:auth): authentication failure; logname=lfaraone uid=1000 euid=0 tty=/dev/pts/25 ruser=lfaraone rhost=  user=root

基本的,天真的代码来完成这一问题将是如下:

loginattempts = {"root": 0,
                 "someuser": 0,} # Usernames you want to check
with open('/var/log/auth.log', 'r') as authlog:
    for line in authlog:
        if "authentication failure" in line:
            username = line.split('=')[-1] # split the string into an array, 
                                           # using '=' as the delimiter
            if username in loginattempts: # is the username one we care about?
                loginattempts[username] += 1

如用户calmh暗示,它可能会更好的长期用正则表达式解析,但如果你不知道他们已经,也可以是不平凡的学习。



Answer 3:

你可能需要阅读文件,每行解析。 当你找到一个匹配你感兴趣的(失败的root登录,例如)线,你增加一个计数器。

看看如何读取文件 ,并可能如何使用正则表达式 。

如果你打算做此项检查对一个“活”的日志文件,说每五分钟,你需要跟踪你有多少文件已经处理,这样你就不是所有的每一次读它。 这是稍微复杂一些,因为你需要执行之间记住状态(文件大小)。 在这种情况下,看看shelve模块。



文章来源: Python - retrieving info from a syslog file