php - 通过 php 执行 bash 脚本

标签 php linux bash shell

大家好,我正在尝试实现一个可以操作我的无线网络的 Web 界面。

其中一项操作是将我的卡配置为监控模式。很简单,如果你运行这个命令:

bash prepareCard.sh wlan0

而脚本prepareCard.sh如下:

#! /bin/bash
IFACE=$1
ifconfig $IFACE down
iwconfig $IFACE mode monitor
ifconfig $IFACE up

现在我想通过 php 脚本执行这个脚本:

$cmd = shell_exec("bash prepareCard.sh wlan0");

当我检查卡是否已设置为监控模式时,什么都没有!它仍然处于管理模式! 你能告诉我我哪里出错了吗?

最佳答案

假设运行脚本的网络服务器用户没有足够的权限,您可以尝试通过这种方式修复它:

使用命令visudo 编辑/etc/sudoers 并添加这一行:

ALL    ALL=(root) NOPASSWD: /absolute/path/prepareCard.sh

确保为脚本设置权限 700,这样其他人就无法编辑它。然后用 sudo 像这样执行你的脚本:

$cmd = shell_exec("sudo /absolute/path/prepareCard.sh wlan0");

这应该以 root 身份执行脚本,无需输入密码。

关于php - 通过 php 执行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40375975/

相关文章:

php - 如何将加盐密码显示为字符串

python - 使用 bash 在各自的选项卡中启动我的所有服务器

linux - 使用伪终端从 sudo 中删除冗长

bash - 是否可以直接从 Bash 调用 Haskell 代码并输出到标准输出?

php - 使用 Codeigniter 发送电子邮件时出现问题 - 邮件正文中发送的 header

php - 使用 PHP 突出显示左侧菜单的最佳实践

Linux - 设置 root 密码导致 "strange"行为我想恢复正常

linux - 如何使用 telegraf procstat 插件获取进程名称和进程状态(运行或停止)

Php登录到你的数据库

linux - 不能yum包,它会弹出奇怪的错误