Como permitir o comando para o usuário www-data?

0

Eu tento executar o seguinte comando PHP para obter o endereço IP da eth0.

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | tr ':' ' ' | awk '{ print $3 }'"));

Mas eu não recebo nada de volta. Se eu executar exatamente o mesmo comando via ssh, então eu obtenho o IP, então o comando deve funcionar.

Eu abri visudo e adicionei essas linhas e reiniciei o apache2 depois

www-data        ALL = NOPASSWD: /sbin/ifconfig
www-data        ALL = NOPASSWD: /bin/grep
www-data        ALL = NOPASSWD: /usr/bin/awk
www-data        ALL = NOPASSWD: /usr/bin/tr

Mas ainda não recebo nada

    
por Black 02.05.2016 / 11:28

2 respostas

0

Seu padrão grep parece não corresponder à saída de ifconfig e, portanto, grep não está produzindo saída, tente:

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | awk '{ print $2 }'"));
    
por 02.05.2016 / 12:37
0

Eu encontrei a solução. É porque shell_exec sempre obtém uma saída em inglês, mesmo se o sistema operacional estiver definido como alemão, se você executar shell_exec("/sbin/ifconfig") , você sempre obterá, por exemplo, inet addr em vez de inet Adresse na saída.

Também esqueci de alterar o usuário e o grupo do meu arquivo para www-data com chown e, para permitir a execução do script com chmod , não sei se isso é necessário.

    
por 03.05.2016 / 08:12