Bonjour
Je tente de me connecter avec le module Net::MySQL j'ai la synthaxe suivante
#!/usr/bin/perl -w
use strict;
use IO:ipe;
use Net::MySQL;
use Proc::Fork;
use POSIX qw(strftime);
use POSIX ":sys_wait_h";
my $mysql = Net::MySQL->new(
# hostname => 'localhost',
unixsocket => '/tmp/mysql.sock',
database => 'serverwatch',
user => 'serverwatch',
password => 'serverwatch'
);
child {
my $query = "SELECT * FROM `scheduled` WHERE id=$ARGV[0]";
$mysql->query($query);
if ($mysql->has_selected_record) {
my $a_record_iterator = $mysql->create_record_iterator;
my $record = $a_record_iterator->each;
$query = "SELECT * FROM `task_list` WHERE id=$record->[3]";
$mysql->query($query);
if ($mysql->has_selected_record) {
$a_record_iterator = $mysql->create_record_iterator;
my $record2 = $a_record_iterator->each;
my $remote = $record2->[3];
my $ret = "";
my $cmd = "";
my $query = "SELECT * FROM `host_list` WHERE id=$record->[2]";
$mysql->query($query);
$a_record_iterator = $mysql->create_record_iterator;
my $record4 = $a_record_iterator->each;
if($remote != -1) {
my $query = "SELECT * FROM `host_list` WHERE id=$record2->[3]";
$mysql->query($query);
$a_record_iterator = $mysql->create_record_iterator;
my $record3 = $a_record_iterator->each;
$cmd = "$record2->[2] $record4->[1] $record3->[1] $record->[4]\n";
$ret = `$record2->[2] $record4->[1] $record3->[1] $record->[4]`;
} else {
$ret = `$record2->[2] $record4->[1] $record->[4]`;
$cmd = "$record2->[2] $record4->[1] $record->[4]\n";
}
chomp $ret;
my @ret_tab = split(/\|/, $ret);
my $ret_code = 1;
$ret_code = 0 if ($ret_tab[0] eq "OK");
$ret_code = 1 if ($ret_tab[0] eq "ERROR");
$ret_code = 2 if ($ret_tab[0] eq "WARNING");
# my $time = strftime "%m-%e-%Y %H:%M:%S", localtime;
my $time = time;
$ret_tab[1] =~ s/\'/\\\'/g;
$ret_tab[1] =~ s/\;/\\\;/g;
$ret_tab[1] =~ s/\$/\\\$/g;
$query = " INSERT INTO `log` ( `id` , `scheduled` , `date` , `return_code` , `return_msg`, `return_value`, `cmd` ) VALUES ('', '$ARGV[0]', '$time', '$ret_code', '$ret_tab[1]', '$ret_tab[2]', '$cmd');";
print $query."\n";
$mysql->query($query);
# print $ret."\n";
my $query = "SELECT * FROM `notif_list` WHERE id=$record->[7]";
$mysql->query($query);
print $mysql;
$a_record_iterator = $mysql->create_record_iterator;
my $record5 = $a_record_iterator->each;
if(defined $record5 && $record5->[0] > 0) {
my $notif = $record5->[1]." \"".$record2->[1]."\" \"".$record4->[1]."\" \"".$ret_code."\" \"".$ret_tab[1]."\" \"".$time."\" \"".$record->[9]."\" \"".$record->[0]."\"";;
# print $notif."\n";
`$notif`;
}
}
}
};
lorsque j'execute le script la variable $notif ne retourne rien ...
Je sais que l'accès à une base en utilisant le use DBI fonctionne avec le perl sans problème ... par contre en passant par le module Net rien ne se passe ...
Par ailleurs je ne sais pas où je peux trouver les signes d'erreur
PS : j'execute le script en commande pas par le web

 

 
		
		 
         
 

 
			
			


 
			 
   


 se connecter avec le module Net::MySQL
 se connecter avec le module Net::MySQL
				 Répondre avec citation
  Répondre avec citation
Partager