简体   繁体   中英

Executing a bash script via php

Good day all, I m trying to implement a web interface that will operate my wireless network.

One of the operations is to configure my card into monitor mode. pretty simple, if you run this command:

bash prepareCard.sh wlan0

and the script prepareCard.sh is as follows:

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

Now I want to execute this script via a php script:

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

when I check if the card has been set to monitor mode, nothing! it's still in management mode!! Can you please tell me where did I go wrong?

One good way to debug BASH scripts is to set debug mode on (either by passing an -x flag to bash in your shell_exec call, by running set -x , or in the shebang line #!/bin/bash -x ). This shows you what's going on during execution of the bash script. In your case, I suggest the first case, since you don't know if the script is even being loaded in the first place.

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

After that, you should have more in your $cmd variable.

Assuming the webserver user that is running the script does not have sufficient permissions, you can try this way to fix it:

Use command visudo to edit /etc/sudoers and add this line:

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

Make sure to set permissions 700 to the script, so no one else can edit it. Then execute your script with sudo like this:

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

That should execute the script as root without a need to enter a password.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM