将变量从php传递到bash [英] passing a variable from php to bash
问题描述
我似乎无法从php传递一个变量到我的bash脚本.无论我做什么,$ uaddress和$ upassword都变成空的.
I cannot seem to get a variable passed to my bash script from php. $uaddress and $upassword come up empty no matter what I try.
** * ** * ** * ** * ** * ** * ** * bash * * * * ** * ** * ** * ***
********************* bash ****************
#!/bin/bash -x
useraddress=$uaddress
upassword=$upassword
ssh -p 222 -6 2400:8900::f03c:91f:fe69:8af "/var/www/localhost/htdocs/postfixadmin/scripts/postfixadmin-cli mailbox add" $useraddress --password $upassword --password2 $upassword .ssh
** * ** * ** * * php * ** * ** * ** * ** * ***
********** php ****************
<?php
$upassword = 'test1234'; $uaddress = 'mytestuser@tpccmedia.com';
$addr = shell_exec('sudo /home/tpccmedia/cgi-bin/member_add_postfixadmin 2>&1'); echo $uaddress; echo $upassword;
//$addr = shell_exec('ssh -p 222 -6 2400:8900::f03c:91f:fe69:8af /var/www/localhost/htdocs/postfixadmin/scripts/postfixadmin-cli mailbox add; echo $useraddress; --password; echo $upassword; --password2; echo $upassword; .ssh');
echo "<pre>$addr</pre>";
var_dump($addr);
?>
** * ** * ** * ** 输出并调试 ** * ** * ** * ** *
*********** output and debug ************
mytestuser@tpccmedia.comtest1234
+ useraddress=
+ upassword=
+ ssh -p 2222 -6 2400:8900::f03c:91ff:fe69:8aaf '/var/www/localhost/htdocs/postfixadmin/scripts/postfixadmin-cli mailbox add' --password --password2 .ssh
Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------
Path: /var/www/localhost/htdocs/postfixadmin
---------------------------------------------------------------
Username:
>
string(404) "+ useraddress= + upassword= + ssh -p 2222 -6 2400:8900::f03c:91ff:fe69:8aaf '/var/www/localhost/htdocs/postfixadmin/scripts/postfixadmin-cli mailbox add' --password --password2 .ssh Welcome to Postfixadmin-CLI v0.2 --------------------------------------------------------------- Path: /var/www/localhost/htdocs/postfixadmin --------------------------------------------------------------- Username: > "
推荐答案
您需要将变量作为参数传递给Shell脚本,并且Shell脚本必须读取其参数.
You need to pass the variables as arguments to the shell script, and the shell script has to read its arguments.
因此在PHP中:
$useraddress = escapeshellarg('mytestuser@tpccmedia.com');
$upassword = escapeshellarg('test1234');
$addr = shell_exec("sudo /home/tpccmedia/cgi-bin/member_add_postfixadmin $useraddress $upassword 2>&1");
并在shell脚本中:
and in the shell script:
useraddress=$1
upassword=$2
这篇关于将变量从php传递到bash的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!