1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

HowTo OScam Logauswertung

Dieses Thema im Forum "IPC" wurde erstellt von aragorn, 25. Dezember 2012.

  1. aragorn
    Online

    aragorn Guest

    Angelehnt an das Script aus

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?

    hab ich mal ein PHP script geschrieben um OScam.log sowie OScam.log-prev über den apache2 Webserver auszuwerten, aber ohne Email versandt oder irgendwas zu speichern..

    Da ich aber selber kaum (nur 3 "not found") einträge in meinem Log hab, bitte ich nun hier ein paar User das zu testen und feedback zu geben bzw Screenshots hoch zu laden, wie das bei ihnen aussieht und was man vielleicht noch ändern könnte - das script ist also noch BETA

    und zwar geht ihr da wie folgt vor:

    -> nano /var/www/OSlog.php
    Code:
    <?php
    //v0.14
    //------------------ CONFIG - START -------------------------
    
    [COLOR=#ff0000]$OSCFG = "/var/etc/oscam.conf";
    #$OSLOG = "/tmp/OScam.log";[/COLOR]  //only if $OSCFG is not set
    [COLOR=#ff0000]$Search4 = array('not found' , 'rejected group' , 'timeout');[/COLOR]
    [COLOR=#ff0000]$getALL = 1;[/COLOR]  //get all entries (1) or only from today (0)?
    
    //------------------ CONFIG - END ---------------------------
    
    error_reporting(E_ALL);
    ini_set('track_errors',1);
    ini_set("max_execution_time", "240");
    ob_implicit_flush(true);
    @ob_end_flush();
    
    if (!isset($OSLOG) OR empty($OSLOG) OR !file_exists($OSLOG)) {
        if (isset($OSCFG) AND !empty($OSCFG)) {
            $OSLOG = GetCFG_OScam($OSCFG,"logfile");
        } else {
            if (file_exists("/var/etc/oscam.conf")) {
                $OSLOG = GetCFG_OScam("/var/etc/oscam.conf","logfile");
            }
        }
        if (!isset($OSLOG) OR empty($OSLOG)) {
            if (file_exists("/var/emu/script/functions.sh")) {
                ReadFUNCTIONS();
                $OSLOG = str_replace("\$CAMLOGS",$CAMLOGS,$OSLOGFILE);
            }
        }
        if (!isset($OSLOG) OR empty($OSLOG)) {
            $e="font-size:23px; text-align:left; color:firebrick; font-weight:bold;";
            echo "<b style='".$e."'>Error getting \$OSLOG! Check Configuration! Aborting..</b><br/>\n";
            exit();        
        }
    }
    
    if (!isset($getALL)) { $getALL=1; }
    $files="";
    
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>OSCAM LOG Evaluation</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <?php
    
    echo "Scanning logfiles... \n";
    
    if (!$LOGcontent = file("$OSLOG")) {
        $e="font-size:23px; text-align:left; color:firebrick; font-weight:bold;";
        echo "<b style='".$e."'>Error getting Data! Aborting..</b><br/>\n";
        exit();
    }
    
    $GREP_DATE=preg_quote(date('Y/m/d'),"/");
    $c=$LogLines=0;
    $FOUND=array();
    $DURATION_start = startTime();
    
    if ($getALL == 0) { $get = ".*$GREP_DATE.*"; } else { $get = ""; }
    for($i=0; $i<count($LOGcontent); $i++) {
        foreach ($Search4 AS $S) {
            preg_match("/$get$S/", trim($LOGcontent[$i]), $find);
            if (isset($find[0]) AND !preg_match("/client timeout/", $LOGcontent[$i])) {
                $FOUND["$S"]["$c"] = $LOGcontent[$i];
                $c++;
            }
        }
    }
    if ($i !== 0 ) { $files="$OSLOG"; }
    $LogLines=$i;
    if (file_exists("${OSLOG}-prev")) {
        $LOGcontent = file("${OSLOG}-prev");
        for($i=0; $i<count($LOGcontent); $i++) {
            foreach ($Search4 AS $S) {
                preg_match("/$get$S/", trim($LOGcontent[$i]), $find);
                if (isset($find[0]) AND !preg_match("/client timeout/", $LOGcontent[$i])) {
                    $FOUND["$S"]["$c"] = $LOGcontent[$i];
                    $c++;
                }
            }
        }
        if ($i !== 0 ) { $files.=" , ${OSLOG}-prev"; }
        $LogLines=$LogLines+$i;
    }
    
    echo " Scan took ".endTime($DURATION_start)." seconds<br/>\n";
    echo "Found <b>".$c."</b> matches in <b>".$LogLines."</b> loglines... (files: ".$files.")<br/>\n";
    echo "<br/>\n";
    
    foreach ($FOUND AS $SEARCH => $Sarray) {
        echo "<b>$SEARCH:</b><br/>\n";
        foreach ($Sarray AS $count => $line) {
            echo "$line<br/>\n";
        }
        echo "<br/>\n";
    }
    
    //______________________________________________________________________________________
    
    function startTime() {
        $timeExplode = explode(" ", microtime());
        $time = $timeExplode[1] + $timeExplode[0];
        return $time;
    }
    function endTime($timer) {
        $timeExplode = explode(" ", microtime());
        $time = $timeExplode[1] + $timeExplode[0];
        $finish = $time - $timer;
        $endTime = sprintf("%4.3f", $finish); 
        return $endTime;
    }
    // Auslesen der oscam.conf
    function GetCFG_OScam($FILE="",$SEARCH="") {
        global $OSCFG;
        $SEARCHED="";
        if (!empty($FILE)) { $GETFILE = $FILE; } else { $GETFILE = $OSCFG; }
        if (file_exists($GETFILE)) {
            $PORTcount=0;
            $file = file("$GETFILE");
            if (!empty($SEARCH)) {
                for($i=0; $i<count($file); $i++) {
                    if (preg_match("/$SEARCH/",trim($file[$i]))) {
                        $zeile = "$file[$i]";
                        $SEARCHED = trim(substr(strrchr($zeile, "="), 1));
                        if (isset($zeile[0]) AND $zeile[0]=='#') { $SEARCHED = ""; }
                        break;
                    }
                }
            }
        }
        return $SEARCHED;
    }
    // Auslesen der functions.sh
    // nur variablen in " " werden ausgelesen
    function ReadFUNCTIONS() {
        $functions=fopen("/var/emu/script/functions.sh","r");
        while($input = fgets($functions, 1024)) {
            preg_match("/^(.+)=\"(.*)\"/",trim($input),$find);
            if (isset($find[1]) AND !empty($find[1])) {
                if (!preg_match("/^\[|^.+\[\".+\"\]/",trim($find[1]))) {
                    global $$find[1];
                    if (empty($find[2])) { $find[2]='""'; }
                    $$find[1] = $find[2];
                }
            }
        }
        @fclose($functions);
    }
    ?>
    
    </body>
    </html>
    
    die rot markierten zeilen sind die einzigen die ihr Optional anpassen könntet, aber normalerweise braucht ihr das nicht
    - $OSCFG /pfad/zur/oscam.conf .. kann optional gesetzt werden um "logfile" zu ermitteln, ansonsten alternativ:
    - $OSLOG nur wenn $OSCFG nicht gesetzt ist: /pfad/zum/OScam.log: wenn $OSLOG nicht gesetzt, leer oder das file nicht existiert, wird es anhand der functions.sh versucht zu ermitteln..
    - bei $Search4 kann eingestellt werden nach was in dem Log gesucht werden soll
    - bei $getALL kann eingestellt werden ob alle zeilen angezeigt werden sollen ( $getALL = 1; ) oder nur die von heute ( $getALL = 0; )

    Dann im Webbrowser einfach http://server.ip/OSlog.php aufrufen


    ACHTUNG! Es gibt kein login/pwd schutz also hat jeder auf OSlog.php direkt zugriff!


    das sieht dann so aus:
    Den Anhang 66695 betrachten


    CHANGELOG:

    v0.14:
    - $OSCFG zum auslesen von "logfile" hinzugefügt
    - anzeige welche files durchsucht wurden
    - "client timeout" zeile wird nicht mehr beachtet
     
    Zuletzt von einem Moderator bearbeitet: 26. Dezember 2012
    #1
  2. phantom

    Nervigen User Advertisement

  3. BaNaNaBeck
    Offline

    BaNaNaBeck VIP

    Registriert:
    7. Februar 2008
    Beiträge:
    2.967
    Zustimmungen:
    3.028
    Punkte für Erfolge:
    113
    Beruf:
    Zerstörer
    Ort:
    Überall und Nirgendwo
    AW: OScam Logauswertung

    Ich habe das gerade mal getestet. Bei mir kommt:
    Was denkst du wie Groß darf ein Log sein?
     
    #2
    1 Person gefällt das.
  4. aragorn
    Online

    aragorn Guest

    AW: OScam Logauswertung

    keine ahnung, eigentlich gibt es da keine grenze der grösse des logfiles, sondern nur für die "ausführ dauer des php scripts", das kann über ini_set("max_execution_time", "240"); gesetzt werden..

    wie gross is das logfile (OScam.log und OScam.log-prev) bei dir denn? -> du -sh /var/log/ipc/OScam.log*
     
    #3
  5. BaNaNaBeck
    Offline

    BaNaNaBeck VIP

    Registriert:
    7. Februar 2008
    Beiträge:
    2.967
    Zustimmungen:
    3.028
    Punkte für Erfolge:
    113
    Beruf:
    Zerstörer
    Ort:
    Überall und Nirgendwo
    AW: OScam Logauswertung

    Das hat 1,5 MB. Also ned wirklich nen großes Ding was da am laufen ist gerade.

    Edit: Nun funktioniert es ohne etwas abzuändern...


    Edit 2:
    Aber es werden keine Ergebnisse geliefert obwohl im Log einiges drinnen ist...
    Den Anhang 66696 betrachten
     
    Zuletzt bearbeitet: 25. Dezember 2012
    #4
  6. aragorn
    Online

    aragorn Guest

    AW: OScam Logauswertung

    hm kA meine logs sind insg 1MB also kann es daran eigentlich nicht liegen..
    es müsste auf jedenfall irgendwas kommt, zumindest die "Scanning loglines..." Zeile

    prüf mal die /avr/log/apache2/error.log .. ansonsten prüfen ob du denn aufs IPC Webif zugriff kriegst oder ob da auch der Netzwerkfehler kommt

    hab das script nochma updated


    inwiefern "drinne" ? es werden ja nur die "not found" usw gesucht..

    gibt mal bei $OSLOG das logfile direkt an...
     
    #5
  7. BaNaNaBeck
    Offline

    BaNaNaBeck VIP

    Registriert:
    7. Februar 2008
    Beiträge:
    2.967
    Zustimmungen:
    3.028
    Punkte für Erfolge:
    113
    Beruf:
    Zerstörer
    Ort:
    Überall und Nirgendwo
    AW: OScam Logauswertung

    Nun wird schon mal auch bei mir angezeigt wieviel Loglines er durchsucht hat. Jedoch noch keine Ergebnisse.

    So sieht das nun aus:
    Den Anhang 66700 betrachten
     
    #6
  8. aragorn
    Online

    aragorn Guest

    AW: OScam Logauswertung

    und was kommt bei: grep "not found" /var/log/ipc/OScam.log* | wc -l
     
    #7
  9. BaNaNaBeck
    Offline

    BaNaNaBeck VIP

    Registriert:
    7. Februar 2008
    Beiträge:
    2.967
    Zustimmungen:
    3.028
    Punkte für Erfolge:
    113
    Beruf:
    Zerstörer
    Ort:
    Überall und Nirgendwo
    AW: OScam Logauswertung

    habe ich getan - gleicher zustand

    322 - also er findet da was
     
    #8
  10. aragorn
    Online

    aragorn Guest

    AW: OScam Logauswertung

    aha aber was spuckt er hier aus: grep "$(date +/%m/%d).*not found" /var/log/ipc/OScam.log* | wc -l

    das script wertet nämlich nur die einträge von heute aus..
     
    #9
  11. janni1
    Online

    janni1 Moderator Digital Eliteboard Team

    Registriert:
    3. Mai 2010
    Beiträge:
    4.948
    Zustimmungen:
    5.872
    Punkte für Erfolge:
    113
    AW: OScam Logauswertung

    also bei mir läufts perfekt auf meinem Testsystem
    Den Anhang 66701 betrachten
    gruß
    janni1
     
    #10
    1 Person gefällt das.
  12. BaNaNaBeck
    Offline

    BaNaNaBeck VIP

    Registriert:
    7. Februar 2008
    Beiträge:
    2.967
    Zustimmungen:
    3.028
    Punkte für Erfolge:
    113
    Beruf:
    Zerstörer
    Ort:
    Überall und Nirgendwo
    AW: OScam Logauswertung

    Und somit wäre das Problem gelöst. Da es heute keine Einträge gibt, kann er natürlich auch nichts anzeigen.

    Nun muss ich aber erst mal der Sache auf den Grund gehen warum in diesem Logfile nur Logzeilen vom 15.12. stehen und aktuelle nicht obwohl sich der Datumsstempel "zuletzt geändert" immer aktuell ist.
     
    #11
  13. janni1
    Online

    janni1 Moderator Digital Eliteboard Team

    Registriert:
    3. Mai 2010
    Beiträge:
    4.948
    Zustimmungen:
    5.872
    Punkte für Erfolge:
    113
    AW: OScam Logauswertung

    Also bei mir werden alle Einträge im log gefilter, egal von wann.
    Ich hatte heut auch keine Fehler drin.

    zB: hier vom 17.12.
    Den Anhang 66702 betrachten

    Gruß
    janni1
     
    Zuletzt bearbeitet: 25. Dezember 2012
    #12
  14. aragorn
    Online

    aragorn Guest

    AW: OScam Logauswertung

    hab das script grad nochmal angepasst - hatte einen fatalen bug drin wodurch ihr jetzt leider sehr viele fehlermeldungen im /var/log/apache2/error.log stehen haben müsstet.. einfach rm /var/log/apache2/error.log* && /etc/init.d/apache2 restart ausführen dann is das log wieder leer..

    ausserdem hab ich ins OSlog.php noch das setting $getALL eingefügt, damit kann eingestellt werden ob alle loglines ( $getALL = 1; ) oder nur die von heute ( $getALL = 0; ) ausgewertet werden sollen
     
    #13
  15. janni1
    Online

    janni1 Moderator Digital Eliteboard Team

    Registriert:
    3. Mai 2010
    Beiträge:
    4.948
    Zustimmungen:
    5.872
    Punkte für Erfolge:
    113
    AW: OScam Logauswertung

    klappt perfekt auch mit ( $getALL = 0; )
    Den Anhang 66703 betrachten

    und keine fehler mehr im log a la
    [Tue Dec 25 17:52:46 2012] [error] [client ......] PHP Warning: preg_match(): Unknown modifier '1' in /var/www/ipc/oscam.php on line 42

    gruß
    janni1
     
    #14
    al-x83 und (gelöschter Benutzer) gefällt das.
  16. Gigigaga
    Offline

    Gigigaga Hacker

    Registriert:
    13. Mai 2009
    Beiträge:
    449
    Zustimmungen:
    37
    Punkte für Erfolge:
    28
    AW: OScam Logauswertung

    Servus,

    kurze Frage, bzw. Problem ;-)

    Wo wird der Log bei IPC von ocam erzeugt?
    Wird doch in der oscam.conf festgeschrieben....

    Mein Log geht in /var/log/oscam.log

    nicht in /tmp/OScam.log, auch nicht in /var/etc/OScam.log

    Ist das so richtig?
     
    #15

Diese Seite empfehlen