将URL参数从php脚本传递到bash

时间:2019-07-10 08:19:54

标签: php bash

我正在尝试使用大小写控制语句将参数从URL( PHP 脚本)传递给 Bash 。如果Bash脚本本身是从 Linux 计算机运行的,则Bash脚本本身可以正常工作,但是通过URL调用会返回空白页面。

bash脚本

case $1 in
allBG)
    echo "Prilagane na status 1 - All BG";
    cp /root/copyjob/status/xml/status1_allBG/tvip_provision.xml >/var/www/html/prov.mac/$2/tvip_provision.xml;
;;
allEU)
    echo "Prilagane na status 2 - All EU za"
    cp /root/copyjob/status/xml/status2_allEU/tvip_provision.xml >/var/www/html/prov.mac/$2/tvip_provision.xml
;;
eurotv)
    echo "Prilagane na status 3 - eurotv";
    cp /root/copyjob/status/xml/status3_eurotv/tvip_provison.xml >/var/www/html/prov.mac/$2/tvip_provision.xml;
;;
gotv)
    echo "Prilagane na status 4 - gotv";
    cp /root/copyjob/status/xml/status4_gotv/tvip_provision.xml >/var/www/html/prov.mac/$2/tvip_provision.xml;
;;
bixi)
    echo "Prilagane na status 5 - bixi";
    cp /root/copyjob/status/xml/status5_allbg/tvip_provision.xml >/var/www/html/prov.mac/$2/tvip_provision.xml;
esac

php脚本

$status = $_GET['status'];
$mac = $_GET['mac']; 

echo exec('/root/copyjob/status/status.sh $status $mac');

1 个答案:

答案 0 :(得分:0)

如果要解释PHP或结束字符串并将变量连接到字符串,则需要使用双引号。

所以要么:

echo exec("/root/copyjob/status/status.sh $status $mac");

或:

echo exec('/root/copyjob/status/status.sh ' . $status . ' ' . $mac);

编辑:抱歉,错过了回声。如果要从中输出内容,则必须使用exec的2nd和3rd参数:

<?php
$status = $_GET['status'];
$mac = $_GET['mac']; 
$output = array();
$return_var = null;
exec("/root/copyjob/status/status.sh $status $mac", $output, $return_var);

var_dump($output);
var_dump($return_var);