| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- #!/usr/bin/python
 
- # -*- coding: utf-8 -*-  
 
- import time, sys, getopt, os, random
 
- ip = ""
 
- login = "admin"
 
- password = "12345"
 
- def usage():
 
-     print "Usage:\r\n\
 
-         checklogfile.py <filename> - to check local log file\r\n\
 
-         checklogfile.py -d <ip-address> - to download and check log file"
 
- def parse(path):
 
-     f = open(path)
 
-     lines = [line.rstrip('\n') for line in f]
 
-  
 
-     #Remove UTF8 BOM 
 
-     lines[0] = lines[0].replace('\xEF\xBB\xBF','')
 
-     #Remove empty lines
 
-     for i in range(len(lines)-1, len(lines)-10, -1):
 
-         #print "str -", i, lines[-i] 
 
-         if lines[i] == " "*118+"\x0D":
 
-             del lines[i]
 
-     print "len: ", len(lines)
 
-     return lines
 
- def do_login():
 
-         os.system("curl -s -b /tmp/cookies.txt -c /tmp/cookies.txt -d \"login=%s&password=%s\" http://%s/login.cgi > /dev/null" % (login, password, ip))
 
- def log_download(path):
 
-         print "Downloading log file..."
 
- 	if 0 == os.system("curl -b /tmp/cookies.txt -c /tmp/cookies.txt \"http://%s/history.cgi?page=all&_=%s\" --output %s --progress" % (ip, random.randint(0, 0xFFFF), path)):
 
-             return True
 
-         else:
 
-             return False
 
- def check(path):
 
-     lines = parse(path)
 
-  
 
-     lastptr = 0
 
-     for i in range(len(lines)):
 
-         #i = lines.index(s)
 
-         s = lines[i]
 
-         print "\rProcessing: %d%%" %( (i+1)*100/len(lines)),
 
-         #Check if string in valid format
 
-         if len(s) > 119 or s[0] != '"' or s.count('"') != 2 or s.count('\x00') != 0:
 
-             print "\nError. Log file is corrupted:"
 
-             print "Wrong string (at index %d) : %s" %(i+1, s)
 
-             return False
 
-         strdate = s.replace('"','').split(";")[3].rstrip()
 
-         #print strdate
 
-         newdate = time.strptime(strdate, "%d.%m.%y %H:%M:%S")
 
-         if i != 0:
 
-             if newdate < lastdate:
 
-                 if lastptr == 0:
 
-                     lastptr = i+1
 
-                 else:
 
-                     print "\nError. Wrong message order!"
 
-                     print "Look at index:", i+1 
 
-  
 
-         lastdate = newdate        
 
-    
 
-     print "\nLast message index:", lastptr
 
-     print "Log file is OK"
 
-     return True
 
-         
 
- def main():
 
-     global ip
 
-     try:
 
-         opts, args = getopt.getopt(sys.argv[1:], "hd:", \
 
-                 ["help", "download="])
 
-     except getopt.GetoptError:
 
-         usage()
 
-         sys.exit(2)
 
-     
 
-     for opt, arg in opts:
 
-         if opt in ("-h", "--help"):
 
-                 usage()
 
-                 sys.exit()
 
-         if opt in ("-d", "--download"):
 
-                 ip = arg
 
-     if ip == "" and len(sys.argv) < 2:
 
-         usage()
 
-         sys.exit(2)
 
-     if ip == "": 
 
-         path = sys.argv[-1]
 
-     else:
 
-         path = "/tmp/checklog.csv"
 
-         do_login()
 
-         if not log_download(path):
 
-             print "Download error"
 
-             sys.exit(2)
 
-     
 
-     check(path)
 
- if __name__ == "__main__":
 
-     main()
 
 
  |