Ich hatte mich vor ca. einer Woche dazu entschlossen mir eine Programmier- oder Scriptsprache anzueignen, nach langem überlegen und stöbern nach Informationen habe ich mich dazu entschlossen, dass es Python werden soll.
Lange rede gar kein Sinn.
Hier mein erstes Script:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import pycurl
import sys
import httplib2
from optparse import OptionParser
# Hier koennen default Variablen gesetzt werden damit man
# sie nicht jedes mal beim start mit angeben muss.
# Ihr Box API-Token
# Zu finden im Box Control-Panel unter Account -> API-Zugriff
#def_token = ""
# Standard CloudLevel fuer neue Boxen setzen
# CloudLevel1: 20
# CloudLevel2: 21
# CloudLevel3: 22
# CloudLevel4: 23
# CloudLevel5: 24
#plan_id = ""
# ID der Box die genutzt wird, wenn keine beim start
# angegeben wurde
box_id = ""
##################################################
###### Ab hier bitte nichts mehr editieren ######
##################################################
# httplib2 und pycurl Variablen
h = httplib2.Http(disable_ssl_certificate_validation=True)
c = pycurl.Curl()
# Script Startoptionen
parser = OptionParser("jb [Option] Wert")
parser.add_option("-t", dest="token", help="Box API-Token")
parser.add_option("-i", dest="box_id", help="ID der Box")
parser.add_option("-p", dest="plan_id", help="CloudLevel der Box")
parser.add_option("-s", "--status", action="store_true", dest="box_status",
help="Anzeige des Status der Box(en)")
parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
default=False, help="Textausgabe an die Console aktivieren")
(option, args) = parser.parse_args()
# Checken ob ein API-Token gesetzt ist und ob
# der Pageheader Status 200 (ok) liefert
try:
option.token
except NameError:
option.token = None
try:
def_token
except NameError:
def_token = None
print def_token
print option.token
if def_token == option.token is None:
sys.exit("\nBitte den API-Token im Script oder beim Starten angeben")
if def_token is None:
baseurl = "https://api.box.de/%s/v1.0/Boxes/" % (option.token)
response, content = h.request(baseurl, 'HEAD')
else:
baseurl = "https://api.box.de/%s/v1.0/Boxes/" % (def_token)
response, content = h.request(baseurl, 'HEAD')
if response.status == 200:
print "\nDie Box API ist erreichbar."
else:
sys.exit("\nBitte einen richtigen API-Token setzten")
# Checken ob die ID der Box gesetzt wurde
if option.box_id:
print("\nDie ID %s der Box wurde erfolgreich gesetzt." % option.box_id)
else:
print "\nKeine Box-ID gesetzt"
# Ausgabe des Status der Box(en)
if option.box_status:
if option.box_id is None:
print "Status aller Boxen:\n"
c.setopt(c.URL, baseurl)
c.perform()
c.close()
print "\n"
else:
boxurl = baseurl + option.box_id
print("Staus der Box mit der ID: " + option.box_id + "\n")
c.setopt(c.URL, boxurl)
c.perform()
c.close()
print "\n"
http://www.python-forum.de/pastebin.php?mode=view&s=349
Das ganze funktioniert auch bis jetzt tadellos, sorry wenn es aus euerer sicht sicher ein wenig "unsauber" wirkt, wie gesagt ich habe heute die ersten Beispiele zu Python angesehen und einfach mal angefangen.
Über jeden Tipp wie man es besser machen kann bzw. gewisse Abschnitte besser ordnen, verpacken oder kürzen kann um einen sauberen Code zu erhalten bin ich sehr dankbar.
(ala guck dir zu den zeilen mal das und das an, ich erwarte keine fertige lösung!)
Mein Problem:
Momentan habe ich für token, plan_id & box_id jeweils zwei Variablen, was mir stinkt und besser zu lösen sein muss.
Die einen Variablen kann man im script selbst festlegen die anderen werden per command line übergeben.
Meine Frage: Wie bekomme ich es hin das ich die Variablen im Script setzen kann, die aber vom OptionParser überschrieben werden kann, oder evtl. eine ganz andere lösung?
Hauptsache ich komme von den vorhandenen 6 variablen auf die eigentlich notwendigen 3
Ist das evtl. mit einer Funktion lösbar?
Code: Alles auswählen
print options
{'token': 'dfjhxgfjgdfjdfjhdfjdfjgf', 'box_id': '77753', 'plan_id': None, 'verbose': False, 'box_status': True}
Es würde mir ja schon reichen wenn ich innerhalb dieser Kette(?oder wie nennt man das ding) Daten ersetzen kann, ich bekomme nur nicht raus wie!
Frage:
Im Abschnitt
# Checken ob ein API-Token gesetzt ist und ob
# der Pageheader Status 200 (ok) liefert
wird ja eigentlich nur geprüft ob ein Token gesetzt ist, die baseurl wird gebastelt & der HEAD status überprüft. da ich das vermutlich öfter in dem script brauchen werde kann man das nicht irgendwie als funktion lösen oder es zumindest vereinfachen?
Danke schonmal für jegliche Hilfe
Gruß Chris