首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过php执行bash脚本

通过php执行bash脚本
EN

Stack Overflow用户
提问于 2016-11-02 09:04:15
回答 2查看 84关注 0票数 2

大家好,我正在尝试实现一个网络接口来操作我的无线网络。

其中一个操作是将我的卡配置为监视器模式。非常简单,如果您运行以下命令:

代码语言:javascript
复制
bash prepareCard.sh wlan0

脚本prepareCard.sh如下:

代码语言:javascript
复制
#! /bin/bash
IFACE=$1
ifconfig $IFACE down
iwconfig $IFACE mode monitor
ifconfig $IFACE up

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

代码语言:javascript
复制
$cmd = shell_exec("bash prepareCard.sh wlan0");

当我检查卡是否已设置为监视模式时,什么都没有!它还在管理模式!!你能告诉我哪里出了问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-02 14:16:25

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

使用命令visudo编辑/etc/sudoers并添加以下行:

代码语言:javascript
复制
ALL    ALL=(root) NOPASSWD: /absolute/path/prepareCard.sh

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

代码语言:javascript
复制
$cmd = shell_exec("sudo /absolute/path/prepareCard.sh wlan0");

它应该以root用户身份执行脚本,而不需要输入密码。

票数 0
EN

Stack Overflow用户

发布于 2016-11-02 10:00:50

调试BASH脚本的一个好方法是打开调试模式(通过在-x调用中、通过运行set -x或在#!/bin/bash -x行中传递一个bash标志)。这向您展示了在执行bash脚本时发生了什么。在您的例子中,我建议使用第一种情况,因为您不知道脚本最初是否正在加载。

代码语言:javascript
复制
$cmd = shell_exec("bash -x prepareCard.sh wlan0");

在此之后,您的$cmd变量中应该有更多内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40375975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档