html表单按钮运行命令php exec

时间:2015-10-12 01:58:41

标签: php linux bash button exec

我试图学习如何使用html和php更改某些debian系统设置。我有几个bash脚本为我做事,我想通过Web应用程序来完成它们。

现在我正试图弄清楚如何在名为/etc/hostapd/hostapd.conf的文件中更改SSID名称。

更改SSID名称:_____输入新的SSID_____ [按钮]

一旦有人输入新的SSID名称并按下按钮,那么我将使用php执行bash脚本或仅使用SED命令替换/etc/hostapd/hostapd.conf中的文本,然后显示是否成功或不。我假设我会使用函数和if / then / else。我已经制作了一些像样的bash脚本来自动化某些东西并希望深入到网上。我非常了解并理解HTML,而且PHP似乎也难以理解。

我怎样才能完成这样的事情?

我已尝试在没有用户输入的情况下制作按钮,但无法使其工作,因此尚未尝试使用文本框。假设权限并发现了一些关于向sudo添加Nginx或www-data的内容。

<?php if (isset($_POST['button'])) { exec('echo Hello World'); } ?>
<form action="" method="post">
<button type="submit" name="button">Run</button>
</form>

(我从我找到的另一篇文章修改了这段代码,但是并没有在页面上显示Hello World。)

4 个答案:

答案 0 :(得分:1)

在代码中,您刚刚调用了exec()方法并传递了一个bash命令,输出将返回给函数而不进行回显或打印。你需要回显出返回的字符串或类似的东西:

<?php
echo exec("echo \"Hello World\");
?>

此处参考 - http://php.net/manual/en/function.exec.php

答案 1 :(得分:0)

也许权限有限,请尝试{ exec('sudo echo Hello World'); }

  1. 尝试echo exec('whoami');是否可行
  2. echo $ _POST []判断该值是否存在
  3. mybe命令有语法错误
  4. mybe你只需要显示结果

    { echo exec('sudo echo Hello World'); }
    

答案 2 :(得分:0)

我发现这个代码在其他地方可用于按钮。现在我如何使用输入文本框并将该变量传递给Linux中的SED命令?

void makeblock(block** data_p){
    block* data = *data_p;
    data->a=1; data->b='A'; data++;
    data->a=2; data->b='B'; data++;
}

答案 3 :(得分:0)

如果你以用户www-data运行echo而不是echo出现在哪里?

将其回显到您可以使用的文件

if (isset($_POST['button']))
{
    shell_exec("echo $_POST['button'] > /tmp/ssid");

}

使用shell脚本来执行ssid所需的操作。