Bonjour à tous,
Je suis actuellement en stage, je suis élève de deuxième année de bts informatique, et actuellement je fais un cluster de serveur proxy, tout se passe bien sauf une chose, je dois faire un script perl qui va permettre de copier sur le deuxieme serveur les configurations du second, tout ce passe très bien lorsque j'execute le script manuellement, mais lorsque je veux qu'il s'execute en tache cron rien ne se passe.
Apparement toutes les commandes sytème ne fonctionne pas dans mon script lorsqu'il est executé en tache cron et j'ignore pourquoi, si l'un d'entre vous pouvait m'aider à comprendre ce mystère je lui serais reconnaissant.
Voici mon script :
#!/usr/bin/perl
sub Receptions
{
my ($fichier,$poste, $destination) = @_ ;
`scp root"@""$poste":"$fichier" "$destination"` ;
}
sub Envois
{
my ($fichier,$poste, $destination) = @_ ;
`scp "$fichier" root"@""$poste":"$destination"`;
}
sub Diff
{
my ($fichier1,$fichier2) = @_ ;
if (`diff '$fichier1' '$fichier2'`)
{
return "oui" ;
}
else
{
return "non" ;
}
}
sub VerifMaitre
{
if (`ifconfig eth0:0 | grep adr`)
{
return "oui" ;
}
else
{
return "non" ;
}
}
# main
`mkdir /tmp/synchro/` ;
if ( `ifconfig eth1 | grep adr` =~ /192\.168\.0\.1/ )
{
$poste = "192.168.0.2" ;
}
elsif ( `ifconfig eth1 | grep adr` =~ /192\.168\.0\.2/ )
{
$poste = "192.168.0.1" ;
}
if ( &VerifMaitre eq "oui" )
{
my $fichier = "/etc/squid/squid.conf /etc/squid/squidGuard.conf /etc/ha.d/ha.cf /etc/ha.d/haresources /etc/ha.d/authkeys /etc/drbd.conf /root/.ssh/authorized_keys /etc/apache/httpd.conf /etc/webmin/miniserv.users /etc/passwd /etc/shadow" ;
my $destination = "/tmp/synchro/" ;
&Receptions($fichier,$poste,$destination) ;
my @fichiers = (`ls /tmp/synchro`) ;
for (@fichiers)
{
chomp ;
if ( /squid/ )
{
$fichier1 = '/tmp/synchro/'.$_ ;
$fichier2 = '/etc/squid/'.$_ ;
if ( &Diff($fichier1,$fichier2) eq "oui" )
{
&Envois($fichier2,$poste,$fichier2) ;
$destination = $fichier2.".1" ;
&Envois($fichier1,$poste,$destination) ;
}
}
elsif ( /ha\.cf/ or /haresources/ or /authkeys/)
{
$fichier1 = '/tmp/synchro/'.$_ ;
$fichier2 = '/etc/ha.d/'.$_ ;
if ( &Diff($fichier1,$fichier2) eq "oui" )
{
&Envois($fichier2,$poste,$fichier2) ;
$destination = $fichier2.".1" ;
&Envois($fichier1,$poste,$destination) ;
}
}
elsif ( /authorized_keys/ )
{
$fichier1 = '/tmp/synchro/'.$_ ;
$fichier2 = '/root/.ssh/'.$_ ;
if ( &Diff($fichier1,$fichier2) eq "oui" )
{
&Envois($fichier2,$poste,$fichier2) ;
$destination = $fichier2.".1" ;
&Envois($fichier1,$poste,$destination) ;
}
}
elsif ( /httpd.conf/ )
{
$fichier1 = '/tmp/synchro/'.$_ ;
$fichier2 = '/etc/apache/'.$_ ;
if ( &Diff($fichier1,$fichier2) eq "oui" )
{
&Envois($fichier2,$poste,$fichier2) ;
$destination = $fichier2.".1" ;
&Envois($fichier1,$poste,$destination) ;
}
}
elsif ( /miniserv.users/ )
{
$fichier1 = '/tmp/synchro/'.$_ ;
$fichier2 = '/etc/webmin/'.$_ ;
if ( &Diff($fichier1,$fichier2) eq "oui" )
{
&Envois($fichier2,$poste,$fichier2) ;
$destination = $fichier2.".1" ;
&Envois($fichier1,$poste,$destination) ;
}
}
else
{
$fichier1 = '/tmp/synchro/'.$_ ;
$fichier2 = '/etc/'.$_ ;
if ( &Diff($fichier1,$fichier2) eq "oui" )
{
&Envois($fichier2,$poste,$fichier2) ;
$destination = $fichier2.".1" ;
&Envois($fichier1,$poste,$destination) ;
}
}
}
`mkdir /tmp/synchro/conf.d/` ;
$fichier = "/etc/apache/conf.d/*" ;
$destination = "/tmp/synchro/conf.d/" ;
&Receptions($fichier,$poste,$destination) ;
my @apache = (`ls /etc/apache/conf.d/`) ;
for (@apache)
{
chomp ;
$fichier1 = '/tmp/synchro/conf.d/'.$_ ;
$fichier2 = '/etc/apache/conf.d/'.$_ ;
if ( -e $fichier1)
{
if ( &Diff($fichier1,$fichier2) eq "oui" )
{
&Envois($fichier2,$poste,$fichier2) ;
$destination = $fichier2.".1" ;
&Envois($fichier1,$poste,$destination) ;
}
}
else
{
&Envois($fichier2,$poste,$fichier2) ;
}
}
}
`rm -rf /tmp/synchro/` ;
Message édité par Profil supprimé le 09-02-2007 à 15:14:32