All pastes #835640 Raw Edit

Unnamed

public text v1 · immutable
#835640 ·published 2007-12-28 23:28 UTC
rendered paste body
import sys
import re

ip_chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.']
ip_format = "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)"

def main():
   argv = sys.argv
   argc = len(argv)
   
   current_num = ''
   ip_string = ''
   
   number_of_ips = 0
   
   if argc != 2:
      print "Error! Correct usage is \"ip_convert file.txt\"."
      
   filename = argv[1]
   
   try: file = open(filename, 'r')
   except IOError:
      print "Error: Could not find file " + filename + "."
      return 0
      
   x = file.read()
   file.close()
   
   ip_string = ''
   
   file = open("output.txt", 'w') #here we open it to delete any old output file, and create an empty one
   file.close()
   file = open("output.txt", 'wa')
   for i in range(len(x)):
      if x[i] in ip_chars:
         ip_string += x[i]
      
      if (i == len(x)-1) or (x[i] not in ip_chars):
         if(check_ip_validity(ip_string)):
            if number_of_ips == 0:
               file.write(ip_string)
            else:
               file.write(', ' + ip_string)
            number_of_ips += 1
         ip_string = ''
         
   file.close()
   
   print "finished."
   print "found", number_of_ips, "ips"
   
def check_ip_validity(ip_string):
   if re.match(ip_format , ip_string):
      x = re.findall(ip_format, ip_string)
      if x and len(x[0]) != 4:
         return False
      for i in x[0]:
         if not 0 <= int(i) <= 255:
            return False
   else:
      return False
   
   if len(re.findall("\.", ip_string)) == 3:
      return True
   else:
      return False

if __name__ == "__main__":
   main()