Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从php传递到bash_Php_Linux_Bash_Ssh - Fatal编程技术网

将变量从php传递到bash

将变量从php传递到bash,php,linux,bash,ssh,Php,Linux,Bash,Ssh,我似乎无法从php获得传递给bash脚本的变量$不管我怎么做,uaddress和$upassword都会变成空的 ********************bash******************** #!/bin/bash -x useraddress=$uaddress upassword=$upassword ssh -p 222 -6 2400:8900::f03c:91f:fe69:8af "/var/www/localhost/htdocs/postfixadmin/scripts

我似乎无法从php获得传递给bash脚本的变量$不管我怎么做,uaddress和$upassword都会变成空的

********************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
$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);
?>
***********php**************

#!/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
$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);
?>

您需要将变量作为参数传递给shell脚本,并且shell脚本必须读取其参数

因此,在PHP中:

useraddress=$1
upassword=$2
在shell脚本中:

<?php
$upassword = 'test1234'; $uaddress = 'mytestuser@tpcmedia.com';
$uaddress = escapeshellarg($uaddress);
$upassword = escapeshellarg($upassword);
$addr = shell_exec("sudo /home/tpcmedia/cgi-bin/member_add_postfixadmin $uaddress $upassword 2>&1");
?>


#!/bin/bash -x
uaddress=$1
upassword=$2
ssh -p 2222 -6 2400:8900::f03c:91ff:fe69:8aaf "/var/www/localhost/htdocs/postfixadmin/scripts/postfixadmin-cli mailbox add" $uaddress --password $upassword --password2 $upassword
明白了


#!/bin/bash-x
uaddress=$1
upassword=$2
ssh-p 2222-6 2400:8900::f03c:91ff:fe69:8aaf”/var/www/localhost/htdocs/postfix管理员/scripts/postfix管理员cli邮箱添加“$uaddress--password$upassword--password2$upassword

您肯定还想用-特别是密码字段来逃避参数,它可能包含特殊字符。@tangrs谢谢。我还忘了将字符串的单引号改为双引号,这样插值就可以工作了。@Barmar no sir,$useraddress=escapeshellarg($useraddress);给出一个未定义的变量,escapeshellarg(“$useraddress”)将实际作为字符串传递给BASH。对不起,我误读了你的变量名。我已经更新了我的答案。@Barmar,但这就是问题所在,我的朋友。我需要一个变量,而不是静态数据。那个项目每次都会改变。传递静态数据是好的,但动态是坏的。