Home Linux Eseguire script bash di sistema tramite php

Menu Principale

Informatica

Eseguire script bash di sistema tramite php
Domenica 04 Dicembre 2011 16:15

 

Tramite visudo,  occorre aggiungere:

www-data ALL=NOPASSWD: /usr/sbin/squid3 - k reconfigure

In tal modo si abilita l'utente www-data (quello di apache2) da qualsiasi macchina si connetta (ALL ) senza richiedere la digitazione della password (NOPASSWD:) ad eseguire il comando /usr/sbin/squid3 -k reconfigure

 

Lo script poi lo si esegue con il comando php shell_exec:

<?php

$RIS=shell_exec(' sudo percorso e nome script');

echo ($RIS);

$RIS è la variabile dovesi memorizza il codice di uscita dello script

?>

 Il problema di partenza, è quello di riconfigurare squid 3, dopo aver cambiato la configurazione. Infatti, mentre le precedenti versioni di squid2, lanciare il comando squid - k reconfigure non portava alcun problema per il traffico locale in quel momento, cioé durante la riconfigurazione tutto continuava a funzionare, in squid3 si ottiene un errore del tipo:

ERROR

The requested URL could not be retrieved


The following error was encountered while trying to retrieve the URL: (null)://172.16.1.1/test.php

 

Quindi, per poter utilizzare lo script per abilitare e disabilitare l'accesso ad internet nelle aule di informatica della scuola,  non si può utilizzare l'aggiornamento di cron ogni minuto, perché, appunto, la navigazione diviene impossibile.

L'alternativa è quindi quella di lanciare l'aggiornamento di squid, ogni qualvolta ci sia la necessità di attivare/disattivare gli accessii, e non ogni minuto.

Per fare questo, si deve utilizzare il comando sudo, e fare eseguire lo script, dall'utente www-data (se ovviamente si sta utilizzando un web server ) come se fosse root.


 

Ultimo aggiornamento Sabato 10 Dicembre 2011 10:00
 
Copyright © 2012 Scuola, Computer e dintorni. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.