Como executo um script bash solicitado por um formulário html?

0

Minha maneira atual de fazer isso é usar o PHP

<?php

$filename = "log.txt";
$text = $_POST['form'];

$fp = fopen ($filename, "w");
if ($fp) {
    fwrite ($fp, $text);
    fclose ($fp);
    exec('/var/www/html/bash.sh');
header('Location: /next.html');
}
else {
    echo ("ERROR.");

}

?>

Então, eu sei que o script está, pelo menos, em execução, porque ele grava log.txt bem, mas pelo que eu não vejo nada no bash.sh está realmente em execução. Apenas na linha de comando, se eu correr

"exec sudo bash /full/path/bash.sh"

Em seguida, ele executa tudo bem. Não tenho certeza se isso é um erro de permissão ou o quê. Estou fazendo algo errado ou há apenas uma maneira melhor de fazer isso? Agradecemos antecipadamente por qualquer ajuda.

    
por TheNatercacker 14.12.2017 / 07:46

1 resposta

0

Pelo menos três problemas aqui:

  • o código grava o conteúdo do formulário em um arquivo chamado log.txt (em algum diretório desconhecido) e, em seguida, executa o /var/www/html/bash.sh não relacionado
  • o código executa /var/www/html/bash.sh sem especificar um interpretador, portanto, ele depende de um bom shebang no script (e seu teste externo especificou o interpretador: sudo bash ...
  • O script é executado com o id do servidor (www-data ou somesuch) não com raiz.
por 14.12.2017 / 12:18

Tags