Probleme d'execution de script bash

Probleme d'execution de script bash - PHP - Programmation

Marsh Posté le 27-05-2011 à 12:51:05    

Bonjour,  
 
Voici le problème, j'ai deux centreon, l'un sur le serveur A, l'autre sur le B. Je souhaite redémarrer le service nagios du serveur B (distant) depuis une page php du serveur A (local).
 
Dans mon code php, à l'aide de la commande passthru je lance un script bash qui se connecte en ssh sur le serveur distant et lance un script présent sur le serveur distant . L'utilisateur que j'utilise pour la connexion ssh ne demande pas de mot de passe, j'ai utilisé une clé DSA pour l'authentification...
 
Code php :                            
     $cmd="/home/pse/test.sh";
     passthru($cmd, $return);
     echo $return;
 
Script sur le serveur local : (/home/pse/test.sh)  
     #!/bin/bash
 
     ssh -l pse 192.168.51.33 -p 54321 '/home/pse/tes.sh'
 
 
Script sur le serveur distant : (/home/pse/tes.sh)
 
     #!/bin/bash
 
     echo 'password'|sudo -S /etc/init.d/nagios restart
 
 
Après plusieurs essais, le serveur Nagios ne veut pas redémarrer sur le serveur distant.
La variable de retour $return me renvoie le code 255, apparemment php ne peut pas exécuter le script.
 
Je ne comprends pas d'où peut venir le problème. Je précise que lorsque je lance le script à la main sur le serveur A, celui s'exécute sans soucis, et le service nagios du serveur B rédemarre comme il le devrait.
 
Résultat du lancement de test.sh sur la machine A :
     ~$ ./test.sh
     [sudo] password for pse:
     Running configuration check...done.
     Stopping nagios: ..done.
     Starting nagios: done.
 
 
Merci de votre aide.
 
 
 

Reply

Marsh Posté le 27-05-2011 à 12:51:05   

Reply

Marsh Posté le 27-05-2011 à 13:14:04    

Le code php est exécuté par le même utilisateur que lors de tes tests manuels ?

Reply

Marsh Posté le 27-05-2011 à 13:28:10    

Question bête : pourquoi tu ne déclares pas le Centreon B comme étant un collecteur du Centreon A ?
 
comme ça, par le menu "configuration / nagios" du Centreon A, tu pourras redémarrer le Nagios du Centreon B (en prenant soin de décocher la case qui permet de générer la config !)

Reply

Marsh Posté le 27-05-2011 à 14:10:04    

@Elmoriq :  
L'utilisateur qui exécute le script est celui de centreon (www-data).
Je ne pense pas que le problème vienne de là, j'ai mis les droits à 777 pour le script qui est lancé par le php. Je sais que c'est pas top niveau sécurité, mais je suis ici en phase de test. Donc à priori, tous les utilisateurs doivent pouvoir lancer le script.  
 
 
@slywalker : Je veux que les deux centreon check leurs hôtes, si le maitre tombe, j'aurai quand même les graphes...

Reply

Marsh Posté le 27-05-2011 à 14:28:19    

elerf a écrit :

@Elmoriq :  
L'utilisateur qui exécute le script est celui de centreon (www-data).
Je ne pense pas que le problème vienne de là, j'ai mis les droits à 777 pour le script qui est lancé par le php. Je sais que c'est pas top niveau sécurité, mais je suis ici en phase de test. Donc à priori, tous les utilisateurs doivent pouvoir lancer le script.  


 
Tu as déclaré les clefs publiques SSH pour www-data ?

Reply

Marsh Posté le 27-05-2011 à 14:39:00    

Je me connecte en ssh sur le serveur B avec l'utilisateur pse, est-ce que c'est nécessaire de déclarer les clefs publiques pour www-data ?
 

Citation :

Script sur le serveur local : (/home/pse/test.sh)  
     #!/bin/bash
 
     ssh -l pse 192.168.51.33 -p 54321 '/home/pse/tes.sh'


Message édité par elerf le 27-05-2011 à 14:39:40
Reply

Marsh Posté le 27-05-2011 à 14:41:21    

J'ai plutôt l'impression que le script ne peut pas être exécuter en local. En gros que l'utilisateur www-data ne lance pas le script test.sh.
 
Edit : J'avais aussi essayé avec un code du genre :
          $connection = ssh2_connect('192.168.51.33', 54321);
          ssh2_auth_password($connection, 'login', 'password');
          ssh2_exec($connection, "echo 'password'|sudo -S /etc/init.d/nagios restart" );
 
Mais sans succès.


Message édité par elerf le 27-05-2011 à 14:46:43
Reply

Marsh Posté le 15-06-2011 à 14:29:52    

Résolu, il fallait en effet déclarer les clé publiques pour l'utilisateur www-data...
 
Merci à vous.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed