PDA

View Full Version : [PHP] Eseguire un reboot o uno shutdown di una macchina linux con script php


borexino
27-09-2007, 10:13
Salve a tutti!
Ho la necessità di eseguire il reboot o lo shutdown di una macchina con ubuntu tramite uno script php.
Per adesso quello che ho fatto è stato modificare il visuders per disabilitare la richiesta di password al comando sudo reboot e halt.

Successivamente ho creato lo script seguente:


<?
$result = shell_exec('sudo reboot');
print($result);
?>


Purtroppo lo script non funzionava ed allora ho tentato di creare un file .sh da richiamare dal codice PHP:


#!/bin/bash
sudo /sbin/reboot.sh $*



<?
$result = shell_exec('sh /var/www/reboot.sh');
print($result);
?>


Il tutto senza alcun esito! :mc:
Ho provato anche ad utilizzare la chiamata passthru ma senza esito!
chi mi aiuta?
Grazie

fabianoda
27-09-2007, 10:17
Ecco il "manuale di shell_exec".

http://it2.php.net/shell_exec

Probabilmente tu sei in safe mode, puoi vederlo con phpinfo()

borexino
27-09-2007, 10:20
Ecco il "manuale di shell_exec".

http://it2.php.net/shell_exec

Probabilmente tu sei in safe mode, puoi vederlo con phpinfo()

php.ini è a posto :rolleyes:

.... Come si risolve?

dad_89
27-09-2007, 17:44
Prova ad usare direttamente exec in questo modo:

<?php exec('sudo /sbin/reboot'); ?>

In pratica devi dire ad exec dove andare, se gli passi solo "sudo reboot" lui non conosce la posizione effettiva del comando che dovrà eseguire.

Xalexalex
28-09-2007, 16:16
Prova ad usare direttamente exec in questo modo:

<?php exec('sudo /sbin/reboot'); ?>

In pratica devi dire ad exec dove andare, se gli passi solo "sudo reboot" lui non conosce la posizione effettiva del comando che dovrà eseguire.

Se è così non sà nemmeno dove sta Sudo :D
A parte tutto sei sicuro di avere i permessi adatti per fare questo?

cionci
28-09-2007, 19:09
E più che latro il sudo è un comando interattivo...e come fai a mettere la password dell'utente ? E soprattutto con quale utente gira php ?

Prova a far eseguire a php:

whoami > log.txt

Visualizza log.txt e vedi con quale utente gira. Mi immagino quello di Apache.

kk3z
28-09-2007, 22:06
Editando /etc/sudoers si può permettere l'esecuzione di un comando senza che sudo richieda la password. Probabilmente non è stato modificato correttamente, per far sì che non richieda password bisogna inserire in fondo questa riga:
%[nome gruppo dell'utente] ALL = NOPASSWD: [percorso dell'eseguibile], [altro percorso dell'eseguibile], [eccetera]

Sei sicuro di aver messo il gruppo di apache come nome gruppo? puoi postare il tuo sudoers?