Ich habe ein kleines Script geschrieben, welches ich - salopp gesagt - aus einem getopts-Beispiel und meinem ursprünglichen Script zusammengesetzt habe. Nun habe ich dazu ein paar Fragen und hoffe ihr könnt mir helfen und vielleicht ein paar allgemeine Tipps geben. :-)
Hier das Script. Bei Linien zu welchen Fragen habe oder Tipps brauchen könnte, hab ich einen Kommentar angehängt. Grundsätzlich sei noch gesagt, dass das Script in der derzeitigen Aussführung funktioniert. Mir geht es also um allgemeine Optimierung bzw. Fehlerquellen.:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getopt, sys, GeoIP
def resolveAdress(args = sys.argv): # diese Funktion habe ich selbst gebaut. Kann man den Aufbau verbessern, gibt es irgendwelche "Fehler"?
gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
try:
print gi.country_code_by_addr(args[2]) # Hier die Frage, ob man dieses Konstrukt besser lösen kann, als mit args[2] und try?
except Exception, err: # Fehlerbehandlung: Kann man dies vielleicht "verbessern"?
print str(err)
usage()
sys.exit(2)
# Alles hier drunter habe ich kopiert und auf meine Bedürfnisse angepasst
def usage(args = sys.argv):
print 'usage: %s [OPTIONS]' % args[0]
print ''
print 'options'
print ''
print ' -a, --adress A.B.C.D'
print ' -h, --help Show this help menu'
print ''
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "ha", ["help", "adress"])
except getopt.GetoptError, err:
print str(err)
usage()
sys.exit(2)
for o, a in opts:
if o in ("-h", "--help"):
usage()
sys.exit()
elif o in ("-a", "--adress"):
resolveAdress()
else:
assert False, "unhandled option"
if __name__ == "__main__":
main()
Ich erwarte nicht, dass jemand das Script komplett optimiert und auf den Kopf stellt. Wenn ihr irgendwelche Linktipps habt, bin ich damit auch zufrieden.
Wer das Script lokal ausführen will, muss dazu das Paket python-geoip installieren (Ubuntu, Debian). Wie es bei anderen Distributionen oder gar bei Windows heisst, weiss ich nicht.
Grüsse,
think