大家好,我正在尝试实现一个网络接口来操作我的无线网络。
其中一个操作是将我的卡配置为监视器模式。非常简单,如果您运行以下命令:
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");当我检查卡是否已设置为监视模式时,什么都没有!它还在管理模式!!你能告诉我哪里出了问题吗?
发布于 2016-11-02 14:16:25
假设运行脚本的way服务器用户没有足够的权限,您可以尝试以这种方式修复它:
使用命令visudo编辑/etc/sudoers并添加以下行:
ALL ALL=(root) NOPASSWD: /absolute/path/prepareCard.sh确保将权限700设置为脚本,这样其他人就无法编辑它。然后像这样使用sudo执行脚本:
$cmd = shell_exec("sudo /absolute/path/prepareCard.sh wlan0");它应该以root用户身份执行脚本,而不需要输入密码。
发布于 2016-11-02 10:00:50
调试BASH脚本的一个好方法是打开调试模式(通过在-x调用中、通过运行set -x或在#!/bin/bash -x行中传递一个bash标志)。这向您展示了在执行bash脚本时发生了什么。在您的例子中,我建议使用第一种情况,因为您不知道脚本最初是否正在加载。
$cmd = shell_exec("bash -x prepareCard.sh wlan0");在此之后,您的$cmd变量中应该有更多内容。
https://stackoverflow.com/questions/40375975
复制相似问题