Seite 1 von 1
Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 08:45
von ellenbogen
Hallo alle zusammen!
Ich stehe vor einem Rätsel und hoffe, dass mir jemand hier den richtigen Schubs in die Richtige Richtung geben kann, damit ich das Rätsel lösen kann.
Also ich hab die Aufgabe ein Script zu schreiben mit folgenden Kriterien:
Wenn man die Modellnummer eines Gerätes eingibt soll man die Wartungsvertragslänge aufscheinen.
Code: Alles auswählen
#! /usr/bin/python
import json
servicetag = "345ABC"
apikey = "1234"
url = "https://sanbox...." % (servicetag, apikey)
r = requests.get("https://sandbox..." , auth ("user" , "pass"))
Das ist so mal mein grober Plan nur leider bin ich nicht so erfahren im skripten und wäre über jeden Tipp dankbar, der mir meine Blokaden öffnet, wie ich jetzt das ganze am Besten angehe.
Ich arbeite im vi editor.
Mir fehlt irgendwie der Anfang mit welcher Schleife ich das Beste Resultat erreiche. Beziehungsweise ob ich mit dem groben Plan am richtigen Weg bin.
Danke danke danke
LG
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 09:00
von mutetella
@ellenbogen
Zuerst würde ich mir einmal überlegen, in welchen Datentyp Du denn die Informationen ``Modellnummer:Wartungsvertragslänge`` steckst. In Python stehen Dir
verschiedene Datentypen zur Verfügung.
mutetella
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 09:16
von Hyperion
ellenbogen hat geschrieben:
Wenn man die Modellnummer eines Gerätes eingibt soll man die Wartungsvertragslänge aufscheinen.
Die zentrale Frage lautet doch: Wie kann man an diese Information kommen? Wenn man das weiß, weiß man auch, in welcher Form diese Informationen kommen. Dazu hast Du *nichts* geschrieben - wir sehen nur *implizit*, dass Du diese Infos offenbar über einen Webservice beschaffen kannst. Dieser wird ja hoffentlich eine vernünftige Datenstruktur zurückliefern (JSON? XML?), aus welcher man mit geeigneten Bordmitteln (``json``-Modul, ``xml.etree.ElementTree``-Modul / ``lxml``-Modul) die gewünschte Info auslesen kann.
Ob man beim letzten Schritt eine "Schleife" braucht, kann man so noch gar nicht sagen... dazu ist das "big picture" zunächst noch zu unvollständig.
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 09:22
von ellenbogen
@ mutetella
ja, darüber hab ich mir auch schon Notizen gemacht und hab mir folgendes gedacht:
ich würde es mit .append zusammenfügen sprich:
servicetag.append[len(servicetag):url]
bzw.
device = []
device.append(servicetag)
device.append(url)
aber das würde es mir ja nur nebeneinander die Ergebnisse aussprucken, deshalb bin ich von zweiterem wieder abgekommen.
Was ich mich frage ist, ob das Phyton quasi "reicht" wenn ich es nur so (servicetag.append[len(servicetag):url]) zusammen schreibe und es aus dem url das richtig rausfiltert. Irgendwie stehe ich hier vor einer riesen Mauer

Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 09:43
von ellenbogen
@ Hyperion
Die Wartungsvertragslänge kann ich zur Zeit anhand der url und dem api key auslesen im Browser.
Die Endinformation soll auch im Browser auslesbar sein (laut Kollege)
Es geht eigentlich quasi um die zusammenlegung von Gerätemodell(Seriennummer) und Wartungsvertragslänge, so dass man nur die Nummer eingeben muss und die Vertragslänge ausbekommt.
Ja, unvollständig triffts gut, ich hab viele Baustellen und finde den Klebstoff nicht ders zusammenbringt.
Dafür blick ich noch zu wenig durch bei Python.
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 10:05
von Hyperion
ellenbogen hat geschrieben:
Dafür blick ich noch zu wenig durch bei Python.
Das hat bisher eigentlich noch gar nichts mit Python zu tun! Du musst doch erst einmal ein klares Bild vor Augen haben, was Du für die Lösung brauchst. Das fehlt mir hier total. Bisher präsentierst Du nur Bruchstücke, aber genau da, wo man *präzise* Angaben braucht, verschweigst Du diese.
ellenbogen hat geschrieben:
Die Wartungsvertragslänge kann ich zur Zeit anhand der url und dem api key auslesen im Browser.
Was heißt das denn genau? *Wie* werden die Infos dargestellt? Wird da eine HTML-Seite ausgeliefert? Wenn ja, musst Du offenbar für die Lösung einen HTML-Parser verwenden, mit dem Du das HTML-Dokument parsen und die Info extrahieren kannst.
Wie soll denn die Eingabe erfolgen? Da die Ausgabe per Web erfolgen soll, gilt das für die Eingabe vermutlich auch? Wenn ja, musst Du (später) das ganze noch in eine Webapplikation verpacken. Dafür würde ich Dir ein simples Webrahmenwerk wie Bottle oder Flask empfehlen.
Das sind alles Infos, die Du uns und vor allem Dir selber strukturiert darstellen musst. Nur so bekommst Du einen Überblick, kannst die Technologien auswählen und das ganze in sinnvolle Teilprobleme zerlegen, die Du *separat* angehen kannst

Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 10:28
von ellenbogen
Code: Alles auswählen
<a:DellAsset>
<a:AssetParts i:nil="true"/>
<a:CountryLookupCode>3***</a:CountryLookupCode>
<a:CustomerNumber>2118***</a:CustomerNumber>
<a:IsDuplicate>false</a:IsDuplicate>
<a:ItemClassCode>`-002</a:ItemClassCode>
<a:LocalChannel>I****</a:LocalChannel>
<a:MachineDescription>POWEREDGE R710</a:MachineDescription>
<a:OrderNumber>2644****</a:OrderNumber>
<a:ParentServiceTag i:nil="true"/>
<a:ServiceTag>522RB5J</a:ServiceTag>
<a:ShipDate>2012-04-25T19:00:00</a:ShipDate>
<a:Warranty>
<a:EndDate>2016-04-26T18:59:59</a:EndDate>
<a:EntitlementType>INITIAL</a:EntitlementType>
<a:ItemNumber>710-*****</a:ItemNumber>
<a:ServiceLevelCode>4U</a:ServiceLevelCode>
<a:ServiceLevelDescription>ProSupport for End Users and 4hr Mission Critical</a:ServiceLevelDescription>
<a:ServiceLevelGroup>99999</a:ServiceLevelGroup>
<a:ServiceProvider i:nil="true"/>
<a:StartDate>2012-04-25T19:00:00</a:StartDate>
</a:Warranty>
so sehen die Informationen des Links aus die mir zur Zeit zur Verfügung stehen.
Das ist eine von der Firma Dell zur Verfügung gestellte Seite.
So sieht sie bei einer Ausgabe mit xml aus. Bei Json ist es viel unübersichtlicher.
Der Kollege möchte jetzt wenn er die Seriennummer in den Browser eingibt automatisch dabei steht EndDate.
Vielen Dank für deine Geduld
Ich seh da leider immer noch keine Struktur in meinem Kopf nur 100te Notizen aber vielleicht konnte ich dir ein paar Fragen beantworten.
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 10:39
von BlackJack
@ellenbogen: Wenn Du XML bekommst brauchst Du also einen XML-Parser. Die Standardbibliothek hat da beispielsweise `xml.etree.ElementTree`. Wobei ich meistens `lxml.etree` bevorzuge, was die gleiche ”Grund-API” hat, aber mehr Funktionalität.
Falls Dell da auch JSON anbietet würde ich das bevorzugen. Das Format ist ”leichtgewichtiger” und einfacher als XML. Wenn das JSON welches ausgeliefert wird in einem Texteditor unübersichtlich aussieht dann kannst Du das mit entsprechenden Werkzeugen übersichtlicher formatieren. Jeder Editor der von sich aus oder per Plugin JavaScript ”hübsch” formatieren kann, eignet sich dazu. Notfalls parst Du das mit dem `json`-Modul aus der Standardbibliothek und lässt es Dir mit Zeilenumbrüchen und Einrückung vom `json`-Modul wieder speichern.
Wenn das JSON tatsächlich als 'application/JSON' oder ähnlich vom Server kommt, dann hat das Antwort-Objekt von `requests` sogar eine Methode (`json()`) die das schon fertig geparst zurück gibt.
Wenn das mit dem Abfragen klappt, Du also eine Funktion hast der man die Seriennummer übergeben kann und die das Enddatum zurück gibt, kannst Du Dich als nächstes mit dem Tutorial von Bottle oder Flask beschäftigen.
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 11:24
von ellenbogen
Ja es bietet Json an, und ich hatte es auch vor zu verwenden.
Ich hab zwar keine Ahnung wie ich json im vi editor formatieren soll, werde mich aber mal herumgooglen
Ich sag mal zwischenzeitlich danke und hoffe, dass irgendwann das licht angeht

Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 11:56
von Hyperion
ellenbogen hat geschrieben:
Ich hab zwar keine Ahnung wie ich json im vi editor formatieren soll, werde mich aber mal herumgooglen
Wieso willst Du das formatieren? Ich dachte das wird geliefert‽
Python hat das eingebaute ``json``-Modul. Damit ist das Parsen sehr einfach, weil es direkt in die Standarddatenstrukturen wie Dictionaries und Listen transformiert wird.
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 12:00
von BlackJack
@Hyperion: Um es lesen zu können. Die Ansage war ja das JSON total unübersichtlich sei. Ich vermutete deshalb einfach mal das der Webserver das komplett in einer Zeile und mit möglichst wenig ”whitespace” ausliefert. Und dann kann man ja als Mensch in der Tat schlecht die Struktur erkennen, darum der Tipp von mir mit dem ”hübsch” formatieren lassen.
Re: Hilfe skripten, Denkanstoß gesucht
Verfasst: Donnerstag 12. März 2015, 13:05
von Hyperion
Ah... ok.
