Bonjour à tous,
Dans le but de tuer le processus dansguardian par un script cgi, (ou de le relancer par dansguardian -r) voici le script que j'ai realisé:
-une execution de la commande pwd
-une execution de la commande ps -u nobody
-un fork, et un kill du processus pere (boucle infinie du pere)
toutes ces executions (qui fonctionnent) dans le but d'eliminer les problemes de droits, etc...
-un kill du processus de dansguardian : qui ne fonctionne pas
pourquoi? je n'ai pas la reponse...
Merci d'avance.
script :
#!/usr/bin/perl
use CGI;
use POSIX;
print "Pragma: no-cache\n";
print "Cache-control: no-cache\n";
print "Connection: close\n";
print "Content-type: text/html\n\n";
print <<FIN
<html><head>
<title> essaikill.cgi</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
FIN
;
@args = ('pwd');
$retour = system(@args);
if ($retour == 0)
{
print "<br>La commande @args a été exécutée avec succès !<br>";
}
else
{
print "<br>La commande @args a échoué <br>";
}
print "<br>";
@args = ('ps','-u','nobody');
$retour = system(@args);
if ($retour == 0)
{
print "<br><br>La commande @args a été exécutée avec succès !<br>";
}
else
{
print "<br>La commande @args a échoué <br>";
}
$pidpere = getpid();
print "<br> pid du pere : $pidpere<br>";
fork();
if (getpid() == $pidpere)
{
print "<br> pid du pere : $pidpere<br>";
while (1)
{
print('z');
}
}
else
{
$pidfils = getpid();
print "pid du fils : $pidfils<br>";
@args = ('kill',$pidpere);
$retour = system(@args);
if ($retour == 0)
{
print "<br>La commande @args a été exécutée avec succès !<br>";
}
else
{
print "<br>La commande @args a échoué <br>";
}
print "<br>";
$piddans = -1;
open(FILE, "/var/run/dansguardian.pid");
$piddans = <FILE>; chomp $piddans;
close FILE;
print "<br>le pid de dansguardian : $piddans <br>";
@args = ('kill',$piddans);
$retour = system(@args);
if ($retour == 0)
{
print "<br> La commande @args a été exécutée avec succès !<br>";
}
else
{
print "<br> La commande @args a échoué <br>";
}
}
print "</div></body></html>";