对于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完成,但在这种情况下我该怎么做?
答案 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:
$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