douliedai4838 2019-05-28 15:35
浏览 112
已采纳

如何将变量从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 2019-05-28 15:43
    关注

    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
    ");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网