Gegen Internetzensur
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
  • Flickr Photos

    www.flickr.com
27. Mai
Die

IP-Filter-Download mit Python

Python … mag ich noch nicht. Aber das soll einen ja bekanntlich nicht davon abhalten, sich trotzdem damit zu beschäftigen.

Mich hat gestört, dass es keinen brauchbaren IP-Filter für Vista 64bit gibt. Manche Programme (µTorrent, etwa) können das allerdings auch von sich aus. Der Nachteil: Man muss unter Umständen selber updaten – das stresst und führt am Ende doch nur dazu, dass man es vergisst. Dann muss man es eben automatisieren (geht ja, dank der Tasks).

Zuerst habe ich nachgedacht, das ganze über eine Batch unter Zuhilfenahme von aria2 zu lösen, habe mich dann aber aus purem Wahnwitz dagegen entschieden.

Hier ein Python-Skript, das die paranoid-Liste von Bluetack zieht und in verschiedene Ordner verteilt. Das ganze nur noch schedulen und gut is.

Python [Show Plain Code]:
  1. #! /usr/bin/python
  2. import tempfile, os, sys, gzip, shutil
  3.  
  4. # config
  5. ipfilter_url = "http://www.bluetack.co.uk/config/pipfilter.dat.gz"
  6. targets = [
  7.         "/cygdrive/c/zielpfad1/ipfilter.dat",
  8.         "/cygdrive/c/zielpfad2/ipfilter.dat"
  9.         ]
  10.  
  11. def download(url, target):
  12.         import urllib
  13.         try:
  14.                 remoteFile = urllib.urlopen(url)
  15.                 try:
  16.                         localFile = open(target, ‘wb’)
  17.                 except IOError:
  18.                         print "Error: Could not open temp file for writing."
  19.                         return 0
  20.                 localFile.write(remoteFile.read())
  21.                 remoteFile.close()
  22.                 localFile.close()
  23.         except:
  24.                 print "Error: Could not download file"
  25.                 return 0
  26.         return 1
  27.  
  28. # Status
  29. print "Updating IP filter lists"
  30.  
  31. # get temporary filename
  32. tmpfile = tempfile.mktemp()
  33.  
  34. # start download
  35. print "  + Downloading file: " + ipfilter_url
  36. success = download(ipfilter_url, tmpfile)
  37. if success != 1:
  38.         sys.exit(-1)
  39.  
  40. # unzip file (in-place)
  41. print "Decompressing file …"
  42. gzipFile = gzip.open(tmpfile, ‘rb’)
  43. data = gzipFile.read()
  44. gzipFile.close()
  45. outFile = open(tmpfile, "wb")
  46. outFile.write(data)
  47. outFile.close()
  48.  
  49. # copy the file to the targets
  50. print "Copying files to their destination…"
  51. for target in targets:
  52.         print "  + copying to: " + target
  53.         shutil.copy (tmpfile, target)
  54.  
  55. #remove temp file
  56. if os.path.exists(tmpfile):
  57.         if os.path.isfile(tmpfile):
  58.                 print "  + Removing temporary file"
  59.                 os.remove(tmpfile)
  60.                
  61. print "Done."

Voilá. Vielleicht hilft’s ja wem. Für mich war das mein erstes Python-Skript.

Die Kommentarfunktion ist geschlossen.