Forums Neueste Beiträge
 

Anfängerprobleme

25/02/2011 - 20:47 von Tim Ritberg | Report spam
Ich hab mir folgendes zusammengeschrieben:

#!/usr/bin/perl
use DBI;
use strict;
use diagnostics;
use Net::SNMP;

my $database="DBI:mysql:druckerstatistik";
my $user="root";
my $pass="1234";
my @ergebnis ="";

my $dbh = DBI->connect( "$database","$user","$pass") || die

"Database connection not made: $DBI::errstr";
my $sql = qq{select ip from drucker};
my $sth = $dbh->prepare( $sql );
$sth->execute();
while(@ergebnis=$sth->fetchrow_array)
{
print $ergebnis[0]." ";
my $session = Net::SNMP->session( -hostname => '@ergebnis[0]',
-community => 'public');
my $result = $session->get_request( -varbindlist =>
['.1.3.6.1.4.1.2435.2.3.9.4.2.1.5.5.10.0']);

print "$result->{'.1.3.6.1.4.1.2435.2.3.9.4.2.1.5.5.10.0'}";
}
$sth->finish();
$dbh->disconnect();

Ich bekommen immer:
Use of uninitialized value in concatenation (.) or string at
./fetch-counter.pl line 15 (#1).

Da ist aber bestimmt noch viel mehr falsch. Eigentlich soll das Programm
nur eine Liste von IPs aus der DB holen und dann über SNMP einen Status
abfragen.
 

Lesen sie die antworten

#1 Wolf Behrenhoff
27/02/2011 - 12:52 | Warnen spam
On 25.02.2011 20:47, Tim Ritberg wrote:
Ich hab mir folgendes zusammengeschrieben:

my $sth = $dbh->prepare( $sql );
$sth->execute();



Vielleicht hat das Prepare ja nicht geklappt? (wenn dies Zeile 15 ist) -
auch prepare und execute kann man auf Erfolg testen und bei Misserfolg
den DBI-Fehlerstring ausgeben.

Alternativ beim connect mal ein RaiseError=>1 hinzufügen.

my $dbh = DBI->connect($database, $user, $pass, {RaiseError=>1})

Die Anführungszeichen um $database, $user und $pass làsst man auch weg.

Ich bekommen immer:
Use of uninitialized value in concatenation (.) or string at
./fetch-counter.pl line 15 (#1).



Welches ist Zeile 15? Bei dem von dir geposteten Programm ist es
my $sql = qq{select ip from drucker};
was so einen Fehler aber nicht verursachen kann.

- Wolf

Ähnliche fragen