A
aragorn
Guest
Angelehnt an das Script aus Script für tägliche Logauswertung (not found / reject / timeout) per Mail verschicken 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
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:
CHANGELOG:
v0.14:
- $OSCFG zum auslesen von "logfile" hinzugefügt
- anzeige welche files durchsucht wurden
- "client timeout" zeile wird nicht mehr beachtet
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>
- $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:
CHANGELOG:
v0.14:
- $OSCFG zum auslesen von "logfile" hinzugefügt
- anzeige welche files durchsucht wurden
- "client timeout" zeile wird nicht mehr beachtet
Zuletzt bearbeitet von einem Moderator: