Hallo Miteinander,
ich habe jetzt nach langer Zeit von Euren Skripten und Eurer Hilfe profitiert. Daher auch mal was von mir zum Auslesen einer Sophos UTM, der aktuelle Up- und Downstream wird dabei alle 60s (mittels Ereignis, separat erstellen!) ausgelesen und das Delta der gesamten übermittelten Daten innerhalb der Zeit ermittelt. Werte in MBit/s.
Die IP wird unter Data eingetragen - dazu noch fünf Variablen anlegen (1x Up-Pakete gesamt, 1x Down-Pakete gesamt und 1x Up-Speed und 1x Down-Speed, einmal Bool für Linkstatus), der Rest kann gleich bleiben.
Skript:
<?
// *****************************************************************************
$binary = "C:\IP-Symcon\modules\SNMP-Get\SnmpGet.exe";
$data = " -r:192.168.1.1 -t:10 -c:public -o:.";
// *****************************************************************************
//SNMP Query Funktion
function snmp($oid)
{
global $binary, $data;
//$oid = ltrim($oid,".");
$value = IPS_Execute($binary, "$data$oid", false, true);
$value = trim($value);
return $value;
}
$in_alt=GetValueFloat(17435 /*[Komponenten\Sophos UTM\SNMP-Get Sophos UTM\in]*/);
$out_alt=GetValueFloat(11891 /*[Komponenten\Sophos UTM\SNMP-Get Sophos UTM\out]*/);
// *****************************************************************************
//Augehend
$string = snmp ("1.3.6.1.2.1.2.2.1.16.3")."
";
$out = explode("Value=", $string);
//Eingehend
$string2 = snmp ("1.3.6.1.2.1.2.2.1.10.3")."
";
$in = explode("Value=", $string2);
$out =Floatval($out[1]);
$in =Floatval($in[1]);
$data_in=$in-$in_alt;
$data_out=$out-$out_alt;
If ($data_in<0)
{$data_in=0;}
If ($data_out<0)
{$data_out=0;}
SetValueFloat(17435 /*[Komponenten\Sophos UTM\SNMP-Get Sophos UTM\in]*/, $in);
SetValueFloat(11891 /*[Komponenten\Sophos UTM\SNMP-Get Sophos UTM\out]*/, $out);
$speed_in=(($data_in)*8)/60000000; //in Mbit/s
SetValueFLoat(14008 /*[Komponenten\Sophos UTM\Speed-IN]*/, (round($speed_in, 2)));
$speed_out=(($data_out)*8)/60000000; //in Mbit/s
SetValueFLoat(48171 /*[Komponenten\Sophos UTM\Speed-OUT]*/, (round($speed_out, 2)));
//******************************************************************************
// Linkstatus
$integer = snmp ("1.3.6.1.2.1.2.2.1.8.3")."
";
$stat_value = explode("Value=", $integer);
$stat_value =Floatval($stat_value[1]);
If ($stat_value == 1) {
$status="up";
SetValueBoolean(35430 /*[Komponenten\Sophos UTM\LinkStatus UTM]*/, true);}
elseif ($stat_value == 2) {
$status="down";
SetValueBoolean(35430 /*[Komponenten\Sophos UTM\LinkStatus UTM]*/, false);}
elseif ($stat_value == 3) {
$status="testing";}
print $status;
?>
Dazu muss dann noch SNMP-Get in einen Ordner (Ich habe es bei IPS untergebracht) kopiert werden und bei der UTM das SNMP eingeschaltet werden.
SNMP bei der UTM einschalten wie im Bild (Anhang), SNMP-Get hier:
SnmpGet (Cmd-Line Tool) – Syslog Watcher Website
Das Skript war mal nur zum SNMP-Auslesen und ich habe es entsprechend umgebastelt - also ist nicht komplett von mir.
Gruß & viel Spaß,
Maeffjus