Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1648 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  runas via exec, shell_exec, proc_open ou autre ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

runas via exec, shell_exec, proc_open ou autre ?

n°2069385
mageni
veni vidi ridi
Posté le 12-04-2011 à 11:41:15  profilanswer
 

Bonjour,
 
J'aimerais pourvoir exécuter un fichier PHP (sub_exec.php) en tant qu'un utilisateur existant.
voici la comande fonctionnant parfaitement sous le shell de windows (j'utilise sunar.exe qui me permet d'éviter de tapper le mot de passe) :
 

Code :
  1. C:\Documents and Settings\mageni>runas /env /user:mon_utilisateur@mon_domaine "\"C:\\Program Files\\EasyPHP-5.3.3\\php\\php.exe\" \"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\tests\\sub_exec.php\"" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp


J'ai essayé via la fonction exec de PHP :

Code :
  1. exec('runas /env /user:mon_utilisateur@mon_domaine "php sub_exec.php" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp',$stdout,$retour);


et j'ai :

Code :
  1. $stdout => Array()
  2. $retour => 1


J'ai essayé via la fonction shell_exec de PHP :

Code :
  1. $stdout = shell_exec('runas /env /user:mon_utilisateur@mon_domaine "php sub_exec.php" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp');


et j'ai :

Code :
  1. $stdout => NULL


J'ai essayé via la fonction proc_open de PHP :

Code :
  1. $descriptorspec = array(
  2.    0 => array("pipe", "r" ),  // // stdin est un pipe où le processus va lire
  3.    1 => array("pipe", "w" ),  // stdout est un pipe où le processus va écrire
  4.    2 => array("file", "C:\\Temp\\error-output2.txt", "a" ) // stderr est un fichier
  5. );
  6. $cwd = 'C:\\Temp';
  7. $process = proc_open('C:\\WINDOWS\\system32\\runas.exe /env /user:mon_utilisateur@mon_domaine "\"C:\\Program Files\\EasyPHP-5.3.3\\php\\php.exe\" \"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\tests\\sub_exec2.php\"" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp', $descriptorspec, $pipes, $cwd);
  8. if (is_resource($process)) {
  9.     // $pipes ressemble à :
  10.     // 0 => fichier accessible en écriture, connecté à l'entrée standard du processus fils
  11.     // 1 => fichier accessible en lecture, connecté à la sortie standard du processus fils
  12.     // Toute erreur sera ajoutée au fichier /tmp/error-output.txt
  13. //echo "\n-".stream_get_contents($pipes[1])."-";
  14.         //echo "\n-".stream_get_contents($pipes[0])."-";
  15. //fwrite($pipes[1], '"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp');
  16. //fwrite($pipes[0], '"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp');
  17. //echo "\n-".stream_get_contents($pipes[1])."-";
  18.         //echo "\n-".stream_get_contents($pipes[0])."-";
  19.     fclose($pipes[0]);
  20.     fclose($pipes[1]);
  21.     // Il est important que vous fermiez les pipes avant d'appeler
  22.     // proc_close afin d'éviter un verrouillage.
  23.     $return_value = proc_close($process);
  24.     echo "La commande a retourné $return_value\n";
  25. }


et j'ai :

Code :
  1. La commande a retourné 1


A chaque fois ça se termine en erreur (retour 1).
 
Une idée ?
 
d'avance merci,
 
Mageni

mood
Publicité
Posté le 12-04-2011 à 11:41:15  profilanswer
 

n°2069506
MEI
|DarthPingoo(tm)|
Posté le 12-04-2011 à 16:55:15  profilanswer
 

Tu fou le user d'apache dans le groupe d'administrateur de ton OS et voilà quoi... :??:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2069515
mageni
veni vidi ridi
Posté le 12-04-2011 à 17:13:00  profilanswer
 

Hmmm....
Le truc c'est que j'aimerais pouvoir faire la même action sous différents users en ayant qu'un seul apache de lancé.
Tu pourrais expliquer si on peut via cette manière ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  runas via exec, shell_exec, proc_open ou autre ?

 

Sujets relatifs
[Shell] comparaison mot contenu de fichierMesurer le temps d'exec d'une fonction
Exercice de programmation shell[Batch] Runas : Executer plusieurs programmes sur invite CMD [Résolu]
affichage sur le shellCopier-coller par des Variables dans un Wscript.shell.run ne marche pa
[résolu] Exec() dans un fichier batchEmuler un SGBD avec un script shell! (Résolu)
[sh] stocker le résultat d'un script shell interactifShell/Batch grep + sed
Plus de sujets relatifs à : runas via exec, shell_exec, proc_open ou autre ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR