/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
script til update af rrdtool database
Fra : Niels Bachmann


Dato : 25-03-01 00:22

Jeg roder lidt med opsætning at RRDtool på min RedHat 6.2
til det skal jeg bruge et script, der kan opdatere databasen.
først skal jeg have noget data fra fra eth0 vha snmp:
så skal rrdtool kaldes og resultatet fyldes i databasen.
mit scripts ser sådan ud.

#!/usr/bin/perl

$in = `snmpget localhost public 2.2.1.10.2`;
$out = `snmpget localhost public 2.2.1.16.2`;

// resultatet :
// interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 1387329326
// interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 1911769686

$in =~ s/interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: /$1/;
$out =~ s/interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: /$2/;

print "rrdtool update eth0.rrd N:$in:$out";

// skriver rrdtool update eth0.rrd N:1387329326:1911769686

problemet er at der findes et linie skift lige efter $in og $out, så reelt
kommer $out slet ikke med.
hvordan kan jeg løse det ?

MVH/ Niels Bachmann
--
"Mandrake.... Have you ever seen a 'commie drink a glass of water?"

http://www.precious.dk



 
 
Morten Guldager (25-03-2001)
Kommentar
Fra : Morten Guldager


Dato : 25-03-01 08:15

On Sun, 25 Mar 2001 00:22:05 +0100, Niels Bachmann <precious@precious.dk> wrote:
>Jeg roder lidt med opsætning at RRDtool på min RedHat 6.2
>til det skal jeg bruge et script, der kan opdatere databasen.
>først skal jeg have noget data fra fra eth0 vha snmp:
>så skal rrdtool kaldes og resultatet fyldes i databasen.
>mit scripts ser sådan ud.
>
>#!/usr/bin/perl
>
>$in = `snmpget localhost public 2.2.1.10.2`;
>$out = `snmpget localhost public 2.2.1.16.2`;
>
>// resultatet :
>// interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 1387329326
>// interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 1911769686
>
>$in =~ s/interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: /$1/;
>$out =~ s/interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: /$2/;
>
>print "rrdtool update eth0.rrd N:$in:$out";
>
>// skriver rrdtool update eth0.rrd N:1387329326:1911769686
>
>problemet er at der findes et linie skift lige efter $in og $out, så reelt
>kommer $out slet ikke med.
>hvordan kan jeg løse det ?

Hvad med at bruge rrdtool's perlmoduler? Ligeledes med dit snmp snask.

Her er lidt udklip der måske kan hjælpe dig vidre:

use Net::SNMP;
BEGIN{push @INC, '/usr/local/rrdtool-1.0.25/lib/perl';};
use RRDs;

Net::SNMP->session
get_request

RRDs::update ($rrdfil, "N:$input:$output");
my $error = RRDs::error();
die "RRDs::update: $error\n" if defined $error;
   

/Morten

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste