大家好,我正在尝试实现一个可以操作我的无线网络的 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/