updatezinfo.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/python
  2. from dateutil.zoneinfo import rebuild
  3. import shutil
  4. import sys
  5. import os
  6. import re
  7. SERVER = "elsie.nci.nih.gov"
  8. DIR = "/pub"
  9. NAME = re.compile("tzdata(.*).tar.gz")
  10. def main():
  11. if len(sys.argv) == 2:
  12. tzdata = sys.argv[1]
  13. else:
  14. from ftplib import FTP
  15. print "Connecting to %s..." % SERVER
  16. ftp = FTP(SERVER)
  17. print "Logging in..."
  18. ftp.login()
  19. print "Changing to %s..." % DIR
  20. ftp.cwd(DIR)
  21. print "Listing files..."
  22. for name in ftp.nlst():
  23. if NAME.match(name):
  24. break
  25. else:
  26. sys.exit("error: file matching %s not found" % NAME.pattern)
  27. if os.path.isfile(name):
  28. print "Found local %s..." % name
  29. else:
  30. print "Retrieving %s..." % name
  31. file = open(name, "w")
  32. ftp.retrbinary("RETR "+name, file.write)
  33. file.close()
  34. ftp.close()
  35. tzdata = name
  36. if not tzdata or not NAME.match(tzdata):
  37. sys.exit("Usage: updatezinfo.py tzdataXXXXX.tar.gz")
  38. print "Updating timezone information..."
  39. rebuild(tzdata, NAME.match(tzdata).group(1))
  40. print "Done."
  41. if __name__ == "__main__":
  42. main()