douliedai4838
douliedai4838
2019-05-28 15:35

如何将变量从php传递到aed?

已采纳

I'm have a raspbian running on a raspberry pi3, I'm making a system that requires the person to choose the hostname by typing it into a field. And to swap the hostname, I need to change two files inside the /etc/ folder.

I have already managed to make these changes by the sed command, however since I want the person to choose the hostname, I made a form for PHP and wanted to take this variable by POST and pass it on to the sed command.

<link rel="stylesheet" type="text/css" href="css/style.css">

<form method="POST">

<input  type="text" name="hostname">
<input type="submit" name="Comentar" value=" Salvar">

</form>

<?php 

if(isset($_POST['Comentar'])){   
        echo "botão foi clicado"."<br/>";
        $SEU_HOSTNAME = $_POST["hostname"];
        echo  "hostname digitado: ".$SEU_HOSTNAME; 


    shell_exec ('

        cd /etc/
        sudo sed -i "s/nome/${SEU_HOSTNAME}/" hosts
        sudo sed -i "s/nome/${SEU_HOSTNAME}/" hostname
    ');

    }

?>

Only {} appears in the file that is modified. Would anyone know what I could change?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • duansai1314 duansai1314 2年前

    In PHP you need to use double quotes for a string if you want to pass a variables into it.

    Additionally if you want to pass user input as a shell script argument, you need to sanitize it, otherwise user will be able to execute any shell script on your machine. In PHP you can use escapeshellarg for this.

    Finally, your code should look like this:

    $HOSTNAME=escapeshellarg("s/nome/$SEU_HOSTNAME/");
    shell_exec ("
        cd /etc/
        sudo sed -i $HOSTNAME hosts
        sudo sed -i $HOSTNAME hostname
    ");
    
    点赞 评论 复制链接分享
  • duanliu8998 duanliu8998 2年前

    You can only do the variable names in double quotes.

    shell_exec ('
    
        cd /etc/
        sudo sed -i "s/nome/'.$SEU_HOSTNAME.'/" hosts
        sudo sed -i "s/nome/'.$SEU_HOSTNAME.'/" hostname
    ');
    
    点赞 评论 复制链接分享

相关推荐