Schrift
[thread]3793[/thread]

Datei von einem Array in die Datenbank einlegen: DAtenbank

Leser: 1


<< >> 6 Einträge, 1 Seite
nour
 2007-03-07 12:42
#35321 #35321
User since
2006-11-15
108 Artikel
BenutzerIn
[default_avatar]
Hallo,

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
ich habe den folgende Array in meine Code:

my @Routerlist =(
 
[ qw/1  router3 10.100.2.99  admin router/ ],
   
[ qw/2  router9 10.100.2.105 admin router/ ],
);

for my $Router ( @Routerlist ) {
  get_Router ( @{ $Router} );
}


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Gesamte code

use strict;
use warnings;
use DBI;
use Net::Telnet::Cisco;
use Digest::MD5;
our $dbh;

open(DAT, '<','../gate_common/MySQLAccount.txt') or  die"Could not open SQL-Data-file!";
$raw_data=<DAT>;
close(DAT);
chomp $raw_data;

my  ($host,$user,$pass,$db) = split(/:/, $raw_data);
print "host ".$host."\n"."user ".$user."\n"."pass ".$pass."\n"."db   ".$db."\n";

$dbh = DBI->connect("DBI:mysql:".$db.":".$host,$user,$pass) or die "Connect Error: $DBI::errstr()\n";

my @Routerlist =(
 
[ qw/1  router3 10.100.2.99  admin router/ ],
   
[ qw/2  router9 10.100.2.105 admin router/ ],
);
for my $cisco ( @ciscolist ) {
  get_Router( @{ $cisco } );

}

$dbh->disconnect;

sub get_Router
{

my $dbh;
my $neid=shift;
 my $ip=shift;
my $user=shift;
my $pwd=shift;
my ($query,$sth,$sth1,$execu,$newdata,$ds, $datarefid);




$query="INSERT INTO DATEN(ID,Type,Name,Address,Referenz,Data_RefIerenz,User_ID) VALUES ('',2,'???','$ip',$neid,0,0)";
                 $sth = $dbh->prepare($query) or die "Querry Error prepare: $DBI::errstr\n";
                 $ds = $sth->execute or die "Querry Error execute: $DBI::errstr\n";
                 $datarefid = $dbh->{'mysql_insertid'};
                 $sth->finish();



}




Mein Problem:

Ich will die beide Namen der Router(router1, router 2) die im  Array oben gegben mittels der SQL Satatement in die Datenabank in der Tabelle Daten eintragen!!!

was soll ich da in Meinem Statement Statt"??????" schreiben!

Mit freundlichen Grüßen.
renee
 2007-03-07 12:55
#35322 #35322
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub get_Router
{
my ($neid,$name,$ip,$user,$pwd) = @_;
my $dbh;
my ($query,$sth,$sth1,$execu,$newdata,$ds, $datarefid);

$query="INSERT INTO DATEN(ID,Type,Name,Address,Referenz,Data_RefIerenz,User_ID) VALUES ('',2,?,?,?,0,0)";
$sth = $dbh->prepare($query) or die "Querry Error prepare: $DBI::errstr\n";
$ds = $sth->execute($name,$ip,$neid) or die "Querry Error execute: $DBI::errstr\n";
$datarefid = $dbh->{'mysql_insertid'};
$sth->finish();
}
\n\n

<!--EDIT|renee|1173264990-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nour
 2007-03-07 13:31
#35323 #35323
User since
2006-11-15
108 Artikel
BenutzerIn
[default_avatar]
Hallo ,

Ist besser wenn ich schreibe den ganzen Code Komplett:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
use strict;
use warnings;
use DBI;
use Net::Telnet::Cisco;
use Digest::MD5;
our $dbh;

open(DAT, '<','../gate_common/MySQLAccount.txt') or  die"Could not open SQL-Data-file!";
$raw_data=<DAT>;
close(DAT);
chomp $raw_data;

my  ($host,$user,$pass,$db) = split(/:/, $raw_data);
print "host ".$host."\n"."user ".$user."\n"."pass ".$pass."\n"."db   ".$db."\n";

$dbh = DBI->connect("DBI:mysql:".$db.":".$host,$user,$pass) or die "Connect Error: $DBI::errstr()\n";

my @Routerlist =(
 
[ qw/1  router3 10.100.2.99  admin router/ ],
 
[ qw/2  router9 10.100.2.105 admin router/ ],
);
for my $cisco ( @ciscolist ) {
 get_Router( @{ $cisco } );

}

$dbh->disconnect;

sub get_Router
{

my ($neid,$name,$ip,$user,$pwd) = @_;

my ($query,$sth,$sth1,$execu,$newdata,$ds, $datarefid);

if (!$loggedin)
    {
    eval
    {
     print "$stext:Try connecting via telnet...\n";
     $session = Net::Telnet::Cisco->new(-Timeout => 10);
     $session->open($ip);
     $session->login($user,$pwd);
     $loggedin=1;
    };
     if ($@) # Ist ein Fehler aufgetreten
     {
     $session->close;
   
     print "Router nicht erreichbar/kann nicht einloggen \n";
 
$query="SELECT ID, ASTATE, RefID FROM STATE WHERE NEID='$neid' ORDER BY  DESC LIMIT 1";
            $sth = $dbh->prepare($query) or die "Querry Error prepare: $DBI::errstr\n";
            $sth->execute or die "Querry Error execute: $DBI::errstr\n";
       if ($Astate )

    {$sth->finish;

 
        $loggedin=0;
}

if ($loggedin)
{

$query="INSERT INTO DATEN(ID,Type,Name,Address,Referenz,Data_RefIerenz,User_ID) VALUES ('',2,'','$ip',$neid,0,0)";
                $sth = $dbh->prepare($query) or die "Querry Error prepare: $DBI::errstr\n";
                $ds = $sth->execute or die "Querry Error execute: $DBI::errstr\n";
                $datarefid = $dbh->{'mysql_insertid'};
                $sth->finish();





}

Mit der Lösung von Renne Bekomme ich ein fehler in der Folgende Zeile : """if ($@) # Ist ein Fehler aufgetreten ""

------> ein fehler beim connection war
und die fehller in meinem COde HAbe ich genau bekommen nach der Neue Lösung von " RENEE".

Kann mich jemand helfen ob das fehler an Folgendes liegt:
"my ($neid,$name,$ip,$user,$pwd) = @_;"



Danke
renee
 2007-03-07 13:36
#35324 #35324
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du hast das my $dbh rausgeschmissen, was bei mir aber noch drin ist...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nour
 2007-03-07 13:47
#35325 #35325
User since
2006-11-15
108 Artikel
BenutzerIn
[default_avatar]
Hallo,

rotzdem habe ich geschrieben :

und er liefert mir dieses Fehler auf die COnsole:

Code: (dl )
1
2
3
4
5
6
router3-2926:Try connecting via telnet...
Router  nicht erreichbar/kann nicht einloggen
Can't call method "prepare" on an undefined value at ./test.pl line 109.
Line 109:
ist damit folgendes gemeint:
"$sth = $dbh->prepare($query) or die "Querry Error prepare: $DBI::errstr\n";"


der problem Dass mein Programmt wird an den Zeile "print "Router nicht erreichbar/kann nicht einloggen \n";"Stoppt und macht nicht weiter!

Woran das liegt Habe ich keine ahnung!





Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Hier ist noch mal mein Code Ohne " RENNE" Lösung

use strict;
use warnings;
use DBI;
use Net::Telnet::Cisco;
use Digest::MD5;
our $dbh;

open(DAT, '<','../gate_common/MySQLAccount.txt') or  die"Could not open SQL-Data-file!";
$raw_data=<DAT>;
close(DAT);
chomp $raw_data;

my  ($host,$user,$pass,$db) = split(/:/, $raw_data);
print "host ".$host."\n"."user ".$user."\n"."pass ".$pass."\n"."db   ".$db."\n";

$dbh = DBI->connect("DBI:mysql:".$db.":".$host,$user,$pass) or die "Connect Error: $DBI::errstr()\n";

my @Routerlist =(

[ qw/1  router3 10.100.2.99  admin router/ ],
 
[ qw/2  router9 10.100.2.105 admin router/ ],
);
for my $cisco ( @ciscolist ) {
get_Router( @{ $cisco } );

}

$dbh->disconnect;

sub get_Router
{

my $neid=shift;
my $machine=shift;
 my $ip=shift;
 my $user=shift;
 my $pwd=shift;

my ($query,$sth,$sth1,$execu,$newdata,$ds, $datarefid);

if (!$loggedin)
   {
   eval
   {
    print "$stext:Try connecting via telnet...\n";
    $session = Net::Telnet::Cisco->new(-Timeout => 10);
    $session->open($ip);
    $session->login($user,$pwd);
    $loggedin=1;
   };
    if ($@) # Ist ein Fehler aufgetreten
    {
    $session->close;
   
    print "Router nicht erreichbar/kann nicht einloggen \n";

$query="SELECT ID, ASTATE, RefID FROM STATE WHERE NEID='$neid' ORDER BY  DESC LIMIT 1";
           $sth = $dbh->prepare($query) or die "Querry Error prepare: $DBI::errstr\n";
           $sth->execute or die "Querry Error execute: $DBI::errstr\n";
               if ($Astate )
             
     {$sth->finish;
             
       
            $loggedin=0;
}

if ($loggedin)
{

$query="INSERT INTO DATEN(ID,Type,Name,Address,Referenz,Data_RefIerenz,User_ID) VALUES ('',2,'','$ip',$neid,0,0)";
               $sth = $dbh->prepare($query) or die "Querry Error prepare: $DBI::errstr\n";
               $ds = $sth->execute or die "Querry Error execute: $DBI::errstr\n";
               $datarefid = $dbh->{'mysql_insertid'};
               $sth->finish();





}



Danke
vayu
 2007-03-12 12:22
#35326 #35326
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
bin ich blind, oder passt das heir nicht zusammen?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
my @Routerlist =(

[ qw/1 router3 10.100.2.99 admin router/ ],

[ qw/2 router9 10.100.2.105 admin router/ ],
);
for my $cisco ( @ciscolist ) {
get_Router( @{ $cisco } );

}


oben heisst Router, in der for dann cisco ...

das heisst, dein $neid dürfte leer sein und das prepare schlägt fehl, weil ein undef value übergeben wurde\n\n

<!--EDIT|vayu|1173695049-->
<< >> 6 Einträge, 1 Seite



View all threads created 2007-03-07 12:42.