Salut !
J'ai un legé différent avec mon serveur PHP.
En effet si je tape une commande de ce style sous une console
[CODE]
rsh toto -l root -n /scripts/unix/PresenceServeur.sh 123.72.46.105
[/CODE]
j'ai le bon retour : Ok (comme prévu dans le script)
Mais dès que je le lance depuis une instruction Exec() j'ai le retour à 1 donc flop !
Vu qu'il s'agit d'un ping le script est un peu long a répondre 3-4 secondes mais de là a me retourner 1....
Une idée ?
Voilà mes codes :
Extrait de ma class :
[CODE]
private function ExecuteCommand($script){
// Entrée :
// - nom du script à exécuter
// Sortie :
// - tableau contenant 'PB CMD' => si une erreur a été rencontrée durant l'exécution du script
// - tableau contenant la sortie standard STDOUT du script qui a été exécuté
//
$command = $script;
$err = 0 ;
exec($command, $output, $err);
if ($this->debug){
echo "CMD : $command<br>";
echo 'output : '.nl2br(print_r($output,true)).'<br>';
echo 'err : '.$err.'<br>';
}
if ($err)
{
return array('PB CMD');
}
else
{
return $output;
}
}
[/CODE]
un autre bout :
[CODE]
function PresenceService($ipserver='', $alias='' ){
if( $ipserver != '' ) $this->ipserver=$ipserver;
if( $alias != '' ) $this->alias=$alias;
if ($this->bouchon){
$var = 1; //$var=rand(0, 2);
$t1=array();
$t2=array('Ok');
$t3=array('PB CMD');
$tab=array($t1, $t2, $t3);
$result=$tab[$var];
}else{
$result=$this->ExecuteCommand("rsh ".$this->host." -l ".$this->login." -n ".$this->PathScript."/PresenceServeur.sh ".$this->ipserver);
}
if ($this->debug){
echo '<br>Function PresenceServeur-> '.nl2br(print_r($result,true));
}
if ( (array_search('PB CMD', $result) === 0) && !(array_search('PB CMD', $result) === FALSE) ){
return false;
}
return $result[0];
}
[/CODE]
PresenceServeur.sh
[CODE]
#!/bin/bash
ADDIP=$1
CMDADSM="ping -c 4 $ADDIP"
$CMDADSM >/dev/null
if [ $? -ne 0 ]
then
echo "Nok"
else
echo "Ok"
fi
[/CODE]