Here is a simple program, which queries /var/log/daemon on my OpenBSD box and gets the list of valid ntp peers.
Questions: what is the easiest way for me to create lists on the fly, by that I mean like perl push my @foo, something_from_say_stderr. The reason is as you can ip = [""] statement before the for loop, I want to avoid that and use list within the second ip loop, where I extract the ip address. Am I confusing? regex: I presume this is rather a dumb question, anyways here it comes! as you can see from my program, pattIp = r\d{1,3}\.... etc, is there any other easy way to group the reptitions, instead of typing the same regex 4 times. TIA Prabhu - amazon: [~/working/programs/python/regex] ttyp4: [109]$ cat syslog.py #!/usr/bin/env python # $Id: syslog.py,v 1.6 2006/11/09 06:24:03 pgurumur Exp $ import getopt, re, os, string, sys, time (dirname, program) = os.path.split(sys.argv[0]) argc = len(sys.argv) def usage(): print program + ": options" print "options: " print " --filename | -f [ name of the file ]" print " --help | -h [ prints this help ]" sys.exit(1) if __name__ == "__main__": if (argc <= 1): usage() else: try: opts, args = getopt.getopt(sys.argv[1:], "f:h", ["help", "filename="]) except getopt.GetoptError: usage() else: filename = "" for optind, optarg in opts: if optind in ("-f", "--filename"): filename = optarg elif optind in ("-h", "--help"): usage() if len(filename): fh = 0 try: fh = open(filename, "r") except IOError, (error, message): print program + ": cannot open " + filename + ": " + message sys.exit(1) pattNtp = r'.*ntpd(?=.*now\s+valid)' count = 0 ip = [""] pid = 0 for line in fh.readlines(): if re.match(pattNtp, line.strip(), re.IGNORECASE): string = line.strip() pattPid = r'\[\d{1,5}\]' pidMatch = re.search(pattPid, string, re.IGNORECASE) if pidMatch is not None: pid = int(re.sub(r'\[|\]', "", pidMatch.group())) pattIp = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' match = re.search(pattIp, string, re.IGNORECASE) if match is not None: ip.append(match.group()) count += 1 print "NTP program started with pid:", pid print "Number of valid peers:", count for x in ip: if len(x): print x fh.close() -- http://mail.python.org/mailman/listinfo/python-list