Advertisement
nattu

Untitled

Jun 6th, 2014
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.43 KB | None | 0 0
  1. #import re
  2. import os
  3. #import sys
  4. import tempfile
  5. import shutil
  6.  
  7. #rc = call("./digger.sh", shell=True)
  8. file_domini = open("lista_con_ns_novanet.txt", "r")
  9. dir_name = 'D:'
  10. filename_suffix = '.zone'
  11. bad_words = ['TTL']
  12. prep_str = "$TTL 1d"
  13.  
  14.  
  15. def line_prepender(filename, line):
  16.     """ aggiunge a inizio
  17.   file la stringa $TTL 1d"""
  18.     with open(filename, 'r+') as f:
  19.         content = f.read()
  20.         f.seek(0, 0)
  21.         f.write(line.rstrip('\r\n') + '\n' + content)
  22.  
  23.  
  24. def create_temporary_copy(path):
  25.     """ crea file temporaneo"""
  26.     temp_dir = tempfile.gettempdir()
  27.     temp_path = os.path.join(temp_dir, 'zone_file.tmp')
  28.     shutil.copy2(path,  temp_path)
  29.     return temp_path
  30.  
  31.  
  32. def zone_file_checker(filename):
  33.     """ aggiunge, modifica e verifica
  34.   le condizioni per cui il file di zona
  35.    sia corretto e non dia problemi
  36.    in fase di migrazione"""
  37.     text = open(filename, 'r')
  38.  
  39.  
  40.     # copio file_di_zona su tmp, e rimuovo righe di eventuali
  41.     # occorrenze di TTL
  42.     with open(create_temporary_copy(filename), 'r+') as tmp:
  43.         templist=[]
  44.         for line in text:
  45.  
  46.             # vedi context manager e any
  47.             if not any(bad_word in line for bad_word in bad_words):
  48.                 if line.lstrip().startswith('IN') and 'MX' in line:
  49.                     line = "@" + line[1:]
  50.                     tmp.write(line)
  51.                 else:
  52.                     tmp.write(line)
  53.  
  54.             # aggiungo $TTL 1d in prepending
  55.             # line_prepender(tmp, prep_str)
  56.  
  57.             # aggiungo @ davanti agli mx records
  58.  
  59.  
  60.  
  61.  
  62.         # esco
  63.         print tmp
  64.         tmp.close()
  65.     text.close()
  66.  
  67. print "controllo nomi di dominio"
  68.  
  69. for riga in file_domini:
  70.     # modifico casi particolari
  71.     if not riga.startswith('('):
  72.  
  73.         if riga.startswith('design4resilience.com'):
  74.             riga = riga.replace('4', '_for_')
  75.  
  76.         # rimpiazzo seguendo la sintassi del nome
  77.         zone_name = riga.replace('.', '_').replace('\n', '')
  78.  
  79.         filename = dir_name + zone_name + filename_suffix
  80.         print filename
  81.  
  82.         count = 0
  83.         try:
  84.             zone_file_checker(filename)
  85.  
  86.         except IOError as e:
  87.             count += 1
  88.             # print filename + ":"
  89.             print "    I/O error({0}): {1}".format(e.errno, e.strerror)
  90.  
  91. if count > 0:
  92.             print "IOError: %d nomi di dominio non trovati" % count
  93.  
  94. file_domini.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement