将PHP变量传递给远程bash脚本

时间:2015-09-24 15:50:30

标签: php bash shell get ssh2-exec

对于bash脚本,是否存在类似于PHP的GET的方法?

这就是我要做的......

PHP文件设置变量并执行远程bash脚本,变量被传递并在bash脚本中使用。

所以这是我的PHP脚本......

 <?php
 $myvar = 'hello world';

 $connection = ssh2_connect('example.com', 22);
 ssh2_auth_password($connection, 'username', 'password');

 $stream = ssh2_exec($connection, '/usr/incoming/myscript.sh');
 ?>

这是远程机器上的myscript.sh ......

 #!/bin/bash          
 echo $myvar

当然这不起作用,因为我不确定如何将$ myvar从PHP文件传递给myscript.sh

我知道PHP使用GET完成,但在这种情况下我该怎么做?

3 个答案:

答案 0 :(得分:2)

我最近发布了一个项目,允许PHP获取真正的Bash shell并与之交互,甚至通过SSH。在此处获取:https://github.com/merlinthemagic/MTS

下载后,您只需使用以下代码:

$shell = \MTS\Factories::getDevices()->getRemoteHost('example.com')->getShellBySsh('username', 'secretPassword');

//instead of triggering a script, just trigger the individual commands i.e.:
$return1  = $shell->exeCmd("echo \$myvar");

答案 1 :(得分:-1)

正如@Phylogenesis评论的那样,你想在脚本调用之后简单地放置变量,然后调用bash脚本使用$1来读取var:

https://eval.in/439053

$stream = "/usr/incoming/myscript.sh " . escapeshellarg($myvar);

您的bash脚本如下所示:

#!/bin/bash          
 echo "$1"

答案 2 :(得分:-1)

的script.php

 <?php
 $myvar = 'hello world';
 $myvar = escapeshellarg($myvar);
 $connection = ssh2_connect('example.com', 22);
 ssh2_auth_password($connection, 'username', 'password');
 $stream = ssh2_exec($connection, '/usr/incoming/myscript.sh '.$myvar);

myscript.sh

#!/bin/bash          
echo $1