我已要求写使用python的分配方案。
我一直在考虑一个syslog文件,我必须要找到的东西出来吧
如何找出作了多少次尝试登录到root帐户?
任何建议,将不胜感激,因为我很新的蟒蛇,完全丧失!
我已要求写使用python的分配方案。
我一直在考虑一个syslog文件,我必须要找到的东西出来吧
如何找出作了多少次尝试登录到root帐户?
任何建议,将不胜感激,因为我很新的蟒蛇,完全丧失!
这样的事情
#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
你想/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暗示,它可能会更好的长期用正则表达式解析,但如果你不知道他们已经,也可以是不平凡的学习。
你可能需要阅读文件,每行解析。 当你找到一个匹配你感兴趣的(失败的root登录,例如)线,你增加一个计数器。
看看如何读取文件 ,并可能如何使用正则表达式 。
如果你打算做此项检查对一个“活”的日志文件,说每五分钟,你需要跟踪你有多少文件已经处理,这样你就不是所有的每一次读它。 这是稍微复杂一些,因为你需要执行之间记住状态(文件大小)。 在这种情况下,看看shelve
模块。