❗️Toto je původní verze internetového fóra ISPforum.cz do února 2020 bez možnosti registrace nových uživatelů. Aktivní verzi fóra naleznete na adrese https://telekomunikace.cz

Počítání dat bez PRTG, MRTG, ......

Návody a problémy s konfigurací.
rv-soft
Příspěvky: 16
Registrován: 19 years ago

Počítání dat bez PRTG, MRTG, ......

Příspěvekod rv-soft » 19 years ago

Pro ty co chtejí počítat přenesená data a nechtějí používat MRTG a jiné grabery a chtejí si udělat svůj systém jsem vypotil PHP script.

<?php

// Script by RV-SOFT (c) 2006


// Zakaznik ( vhodne tyto data postovat z přihlašovací stránky a oid čist z SQL )

$zak="RV-SOFT-PC";
$oid_down="1.3.6.1.4.1.14988.1.1.2.1.1.8.4";
$oid_up="1.3.6.1.4.1.14988.1.1.2.1.1.9.4";

// Router vars

$router="10.30.0.110 public";
$ex_down="GetSNMP $router $oid_down";
$ex_up="GetSNMP $router $oid_up";
$mon=intval(date("m"));
$fn=$zak.".dat";

// předchozí data

if (file_exists($fn)):
$fp=fopen($fn,"r");
$down_save=intval(fgets($fp));
$up_save=intval(fgets($fp));
$down_old=intval(fgets($fp));
$up_old=intval(fgets($fp));
$mon_save=intval(fgets($fp));
fclose($fp);
else:
$down_save=0;
$up_save=0;
$down_old=0;
$up_old=0;
$mon_save=0;
endelse;
endif;

// Reset k prvnimu v mesici

if ($mon!=$mon_save):
$down_old=0;
$up_old=0;
$down_save=0;
$up_save=0;
endif;

// SNMP dotaz

$p=exec($ex_down,$a1,$a2);
$p1=exec($ex_up,$b1,$b2);


$ar=0;
$v=$a1[$ar];
$v2=$b1[$ar];

// Přepočet jednotek

$down=round($v/1000000);
$up=round($v2/1000000);


// kontrola resetu routeru

if ($down<$down_save):
$down_old=$down_old+$down_save;
$down_save=$down;
endif;

if ($up<$up_save):
$up_old=$up_old+$up_save;
$down_save=$up;
endif;

// Zápis hodnot na disk


$zapis=intval($down)."\n".intval($up)."\n".intval($down_old)."\n".intval($up_old)."\n".intval($mon);


$fp=fopen($fn,"w");
fputs($fp,$zapis);
fclose($fp);


// VARS pro obrazovku

$download=$down+$down_old." MB";
$upload=$up+$up_old." MB";
$all=$download+$upload." MB";

// end script by RV-SOFT (c) 2006

?>

<table border="1">
<tr>
<td>&nbsp;</td>
<td>Odeslané</td>
<td>Přijaté</td>
<td>Celkem</td>
<tr>
<td><?php echo $zak ?></td>
<td><?php echo $download ?></td>
<td><?php echo $upload ?></td>
<td><?php echo $all ?></td>
</tr>
</table>

Script samozřejmě má ošetřeno případné restarty routeru a reset hodnot k prvnímu v měsíci.

Pro načítání dat z routeru jsem použil externí příkazový řádek "GetSNMP.exe" jelikož sem měl trožku problém sehnat do PHP vhodnou knihovnu snmp_lib.dll :-)

Externi prikaz staci nakopirovat do system32 a ke stažení je zde:
http://www.rv-soft.net/public/GetSNMP.zip
0 x

Jardas
Příspěvky: 52
Registrován: 19 years ago

Příspěvekod Jardas » 19 years ago

Takže pro Wokna...
i když mám pocit že u Linucha by to neměl být problém, jen se použije externě něco jiného (nejsem linuxák).
0 x

Janca
Příspěvky: 20
Registrován: 19 years ago
Kontaktovat uživatele:

Příspěvekod Janca » 19 years ago

rv-soft píše:sem měl trožku problém sehnat do PHP vhodnou knihovnu snmp_lib.dll :-)


Dík za pomoc pokud chceš tu knihovnu, tak si ji můžeš stáhnout:

Win:
http://joelp.wz.cz/lib_php/php_snmp.dll

Lin:
http://joelp.wz.cz/lib_php/snmp.tgz

Je to nejnovější knihovna. Ale ještě jsem ji neskoušel ;-)
0 x

rv-soft
Příspěvky: 16
Registrován: 19 years ago

Příspěvekod rv-soft » 19 years ago

Tak tady sem ten scriptik upravil pro SQL ve ktere si vytvorite DB internet-data a tabuli users s polozkami jmeno (jmeno) ,heslo (heslo), jmeno zakaznika (zakaznik), oid download (oid_down), oid upload (oid_up) a pobezi to. A budou se zobrazovat data i za minuly mesic.

<?php

// Script by RV-SOFT (c) 2006 ver. SQL


// Zakaznik nacteny dle jmena a hesla z SQL


$conn = mysql_connect("localhost", "jmeno", "heslo");
mysql_select_db("internet-data");
mysql_query("SET NAMES 'cp1250'", $conn);
$sql = "SELECT * FROM users WHERE jmeno = '".$name."'";
$dotaz = mysql_query($sql);
$row = mysql_fetch_array($dotaz);
mysql_close($conn);

// Kontrola přihlášení

if ($row['jmeno']==$name && $row['heslo']==$pass && $row['jmeno']):

$zak=$row['zakaznik'];
$oid_down=$row['oid_down'];
$oid_up=$row['oid_up'];
$fn=$row['jmeno'].".dat";
$fna=$row['jmeno'].".bak";

// vars

$router="10.30.0.110 public";
$ex_down="GetSNMP $router $oid_down";
$ex_up="GetSNMP $router $oid_up";
$mon=intval(date("m"));
$dt[1]="leden";
$dt[2]="únor";
$dt[3]="březen";
$dt[4]="duben";
$dt[5]="květen";
$dt[6]="červen";
$dt[7]="červenec";
$dt[8]="srpen";
$dt[9]="září";
$dt[10]="říjen";
$dt[11]="listopad";
$dt[12]="prosinec";


// Nacteni archivu

if (file_exists($fna)):
$fp=fopen($fna,"r");
$down_archiv=intval(fgets($fp));
$up_archiv=intval(fgets($fp));
$all_archiv=intval(fgets($fp));
$mon_archiv=intval(fgets($fp));
fclose($fp);
else:
$down_archiv=0;
$up_archiv=0;
$all_archiv=0;
$mon_archiv=$mon-1;
if ($mon_archiv=="0") $mon_archiv=12;
endelse;
endif;


// předchozí data

if (file_exists($fn)):
$fp=fopen($fn,"r");
$down_save=intval(fgets($fp));
$up_save=intval(fgets($fp));
$down_old=intval(fgets($fp));
$up_old=intval(fgets($fp));
$mon_save=intval(fgets($fp));
fclose($fp);
else:
$down_save=0;
$up_save=0;
$down_old=0;
$up_old=0;
$mon_save=$mon;
endelse;
endif;

// Reset k prvnimu v mesici

if ($mon!=$mon_save):
$down_archiv=intval($down_old+$down_save);
$up_archiv=intval($up_old+$up_save);
$all_archiv=intval($down_archiv+$up_archiv);
$mon_archiv=$mon_save;
$down_old=0;
$up_old=0;
$down_save=0;
$up_save=0;
$fp=fopen($fna,"w");
$archiv=$down_archiv."\n".$up_archiv."\n".$all_archiv."\n".$mon_archiv;
fputs($fp,$archiv);
fclose($fp);
endif;

// SNMP dotaz

$p=exec($ex_down,$a1,$a2);
$p1=exec($ex_up,$b1,$b2);


$ar=0;
$v=$a1[$ar];
$v2=$b1[$ar];

// Přepočet jednotek

$down=round($v/1000000);
$up=round($v2/1000000);


// kontrola resetu routeru

if ($down<$down_save):
$down_old=$down_old+$down_save;
$down_save=$down;
endif;

if ($up<$up_save):
$up_old=$up_old+$up_save;
$down_save=$up;
endif;

// Zápis hodnot na disk


$zapis=intval($down)."\n".intval($up)."\n".intval($down_old)."\n".intval($up_old)."\n".intval($mon);


$fp=fopen($fn,"w");
fputs($fp,$zapis);
fclose($fp);


// VARS pro obrazovku

$download=$down+$down_old." MB";
$upload=$up+$up_old." MB";
$all=$download+$upload." MB";

// end script by RV-SOFT (c) 2006


?>
<html>

<body bgcolor="#F5F5F5">
<table border="1">
<td>
<b><font size="1" face="verdana" color="blue">&nbsp;&nbsp;Vaše přenesená data&nbsp;&nbsp;</font></b>
<td>
</table>
<br>
<table border="1">
<tr>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;<?php echo $dt[$mon_archiv] ?>&nbsp;&nbsp;&nbsp;</td>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;Odeslané&nbsp;&nbsp;&nbsp;</td>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;Přijaté&nbsp;&nbsp;&nbsp;</td>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;Celkem&nbsp;&nbsp;&nbsp;</td>
<tr>
<td align="center">&nbsp;&nbsp;<?php echo $zak ?>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<?php echo $down_archiv ?>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<?php echo $up_archiv ?>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<?php echo $all_archiv ?>&nbsp;&nbsp;</td>
</tr>
</table>
<br>

<table border="1">
<tr>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;<?php echo $dt[$mon] ?>&nbsp;&nbsp;&nbsp;</td>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;Odeslané&nbsp;&nbsp;&nbsp;</td>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;Přijaté&nbsp;&nbsp;&nbsp;</td>
<td align="center"><b><font color="#5555aa">&nbsp;&nbsp;&nbsp;Celkem&nbsp;&nbsp;&nbsp;</td>
<tr>
<td align="center">&nbsp;&nbsp;<?php echo $zak ?>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<?php echo $download ?>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<?php echo $upload ?>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<?php echo $all ?>&nbsp;&nbsp;</td>
</tr>
</table>
<br>
<input type="button" value="Úvodní stránka" onClick="location.replace('../uvod/uvod.html');">

<?php
else:
?>

<html>
<body bgcolor="#F5F5F5">

<b><font size="1" face="verdana">&nbsp;Neplatné přihlášení.</font></b><br>
<br>
<input type="button" value=" Zpět " onClick="location.replace('index.php');">


<?php
endelse;
endif;
?>

Do tohoto scriptu staci z html stranky z formularem postnout $name a $pass.

:-)
0 x

rv-soft
Příspěvky: 16
Registrován: 19 years ago

Příspěvekod rv-soft » 19 years ago

Jardas píše:Takže pro Wokna...
i když mám pocit že u Linucha by to neměl být problém, jen se použije externě něco jiného (nejsem linuxák).


Tak je to PHP a to bude behat na kazdym OS. Ono je tam jedno z ceho GETnes data z routeru.
0 x

birkof
Příspěvky: 14
Registrován: 19 years ago

Příspěvekod birkof » 19 years ago

Jardas píše:Takže pro Wokna...
i když mám pocit že u Linucha by to neměl být problém, jen se použije externě něco jiného (nejsem linuxák).


Je to easy a není to závislé na OS. Podařilo se mi naprogramovat jednoduchý monitor sítě postanený na SNMTP funkcích z PHP viz:

snmp_get_quick_print -- Fetches the current value of the UCD library's quick_print setting
snmp_get_valueretrieval -- Return the method how the SNMP values will be returned
snmp_read_mib -- Reads and parses a MIB file into the active MIB tree
snmp_set_enum_print -- Return all values that are enums with their enum value instead of the raw integer
snmp_set_oid_numeric_print -- Return all objects including their respective object id within the specified one
snmp_set_quick_print -- Set the value of quick_print within the UCD SNMP library
snmp_set_valueretrieval -- Specify the method how the SNMP values will be returned
snmpget -- Fetch an SNMP object
snmpgetnext -- Fetch a SNMP object
snmprealwalk -- Return all objects including their respective object ID within the specified one
snmpset -- Set an SNMP object
snmpwalk -- Fetch all the SNMP objects from an agent
snmpwalkoid -- Query for a tree of information about a network entity
0 x

Jenya
Příspěvky: 486
Registrován: 18 years ago

Příspěvekod Jenya » 17 years ago

Zdravim, myslim, ze se vyznam v sitich, ale jakehokoliv programovani jsem byl doposud usetren. Neporadil by mi nekdo kam tento script umistit, jak vytvorit tu zahadnou SQL dabazi, nebo nejlepe fungovat bez ni, zkratka jak na to, aby to zacalo pocitat.

Predem diky
0 x

kappi
Příspěvky: 8
Registrován: 18 years ago

Příspěvekod kappi » 17 years ago

Zdravim, měl bych dotaz, jakými způsoby lze zjistit oid? takle bych je zřejmě musel do databáze psát ručně nebo ne?
0 x

Nick_xx
Příspěvky: 123
Registrován: 18 years ago

Příspěvekod Nick_xx » 17 years ago

kappi píše:Zdravim, měl bych dotaz, jakými způsoby lze zjistit oid? takle bych je zřejmě musel do databáze psát ručně nebo ne?

V konzoli napr.:

Kód: Vybrat vše

queue simple pr oid



Jenya píše:Zdravim, myslim, ze se vyznam v sitich, ale jakehokoliv programovani jsem byl doposud usetren. Neporadil by mi nekdo kam tento script umistit, jak vytvorit tu zahadnou SQL dabazi, nebo nejlepe fungovat bez ni, zkratka jak na to, aby to zacalo pocitat.

Predem diky

Musis si nainstalovat server: http://www.wampserver.com/en/
0 x