Problem-Hilfestellung für ein Skript erbeten

Dieses Thema im Forum "Linux-Distributionen" wurde erstellt von Doofchen, 7. Juni 2005.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Doofchen

    Doofchen Kbyte

    Registriert seit:
    30. August 2003
    Beiträge:
    277
    Hallo Linux-Gurus und sonstige Wissende!

    Ist es Möglich mit einem Script eine Zahl zum Weiterverarbeiten abzuholen welche auf einer HTML-Seite dargestellt wird (KDE-Oberfläche darunter) und aus dem Internet abgerufen wurde?

    Manuell funktioniert es mit: Zahl hinterlegen, copy in die Ablage und daraus in eine Editor-Seite kopieren.
    So ähnlich stelle ich mir auch das Skript vor, finde aber absolut keinen Ansatz um meine Hausaufgaben machen zu können (Suche in Foren, im Internet oder in der Literatur).

    Alleine eine Hilfestellung zum Ansatz des Problems würde mir schon sehr helfen - ideal wäre natürlich ein Beispiel.

    Vielen Dank im voraus für Eure Mühe Lernende zu unterstützen.

    Schöne Grüße Rosi
     
  2. Affirmation

    Affirmation Kbyte

    Registriert seit:
    16. März 2005
    Beiträge:
    152
    Wenn du mit "Script" ein Shell-Script meinst, dann geht das beispielsweise in folgenden Schritten

    1. Runderladen der HTML-Seite
    wget <url>

    2. Den Inhalt kannst du dann mit "cat an den Bildschirm senden und dann mit "grep" parsen - je nachdem was genau du suchst (wenn die HTML-Seite nur die Zahl enthält musst du z.B. nichts parsen usw.).
    Hierzu sei dir das Manual ans Herz gelegt :)

    Das Passing an die bash (oder einen anderen Interpreter) würde in etwa so laufen:

    GREPOUT=$(cat <dateiname> | grep <suche>)
     
  3. Doofchen

    Doofchen Kbyte

    Registriert seit:
    30. August 2003
    Beiträge:
    277
    Hallo @Affirmation,

    vorerst vielen Dank für den Beitrag!

    Ja, es ist ein Shell-Skript gemeint.

    Der Vorschlag mit wget ist Super. Habe es gleich einmal versucht.

    Dabei hat sich die Schwierigkeit aufgetan, daß die von wget erzeugte HTML-Quelldatei mit einem EOF (00) als erstem Zeichen beginnt. Damit sind mir die weiteren vorgeschlagenen Schritte verwehrt.
    Lange habe ich gesucht und dann mit dem Hex-Editor diese Entdeckung gemacht.

    Schon wieder ein Fragezeichen. Wenn EOF via dem Hexeditor manuell entfernt ist, dann lässt sich die Datei wieder bearbeitet - aber wie wäre dies mit einem Shell-Skript zu bewältigen?

    Gibt es möglicherweise einen binären 'sed'?

    Schöne Grüße Doofchen
     
  4. Doofchen

    Doofchen Kbyte

    Registriert seit:
    30. August 2003
    Beiträge:
    277
    Nachtrag.

    Hallo@Affirmation,

    dank Ihrer Hilfe es hat geklappt! 'sed' kümmert sich nicht um ein führendes EOF in der Datei, man kann es mit ihm also eliminieren um eine korrekte Textdatei zu erhalten.

    Möglicherweise kann man das Skript noch verbessern aber meine Lösung sieht so aus:

    #!/bin/bash

    # GetFritz!Dat.sh. Version 00.01, 09.06.2005 #
    # Allabendliches Auslesen und Ablegen der Verbindungsdaten aus der Fritz!Box; erforderlich, #
    #+da die Box-Daten nicht akkumuliert, sondern beim Start jedesmal zurückgesetzt werden. #
    # Nur für Volumen- und Zeittarif! Nicht notwendig bei durchgehend benutzter Flatrate. #

    INPUT=
    OUTPUT=
    TIME=

    # Aufruf von Fritz!Box ohne Konsolenausgabe
    wget "http://192.168.178.1/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=internet&var:pagename=internet&var:activetype=pppoe" -o /dev/null

    # Umbenennen des Ergebniss-Datei für leichter zu handhabenden Namen, ursprünglicher Name aber auch durchaus verwendbar.
    #+Gleichzeitig wird dadurch verhindert, dass der Name der Ergebnisdatei bei erneutem Aufruf inkrementiert wird.
    mv "webcm?getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var:lang=de&var:menu=internet&var:pagename=internet&var:activetype=pppoe" "dummy"

    sed 'y/\x00/ /' dummy | sed 'y/;/ /' > dummy # Eingangs-EOF und Semikolons aus der generierten Ergebnis-Datei entfernen
    set -- `grep "var time" dummy` # 1. Variable suchen bzw. parsen (mit flüchtigem, durch Javaskript berechneten Wert belegt)
    TIME=$4 # Ergebnis-Zuweisung aus Spalte 4
    set -- `grep "var inl" dummy` # 2. Variable suchen
    INPUT=$4 # dito, Zuweisung
    set -- `grep "var outl" dummy` # 3. Variable suchen
    OUTPUT=$4 # dito, Zuweisung

    rm dummy # Cleanup
    echo -e $TIME $INPUT $OUTPUT # Testaugabe

    echo -e `expr $INPUT + $OUTPUT` >> Ergebnis.txt # Resultat an Datei schreiben/anhängen
    ...
    ...
    ...

    Schade dass durch das posten die ganze Strukturierung verloren geht!

    Schöne Grüße Helmut
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen