Laravel - 返回 SSH 输出

ped*_*con 5 php ajax ssh laravel

感谢您对这个话题感兴趣。我是Laravel 的新手,我有一个小问题。也许这很容易!我的 Laravel 中有一个 SSH 模块,它以这种方式工作:用户用 Linux 命令填充 textarea 元素。 该命令与 Ajax 一起传递给位于“controllers”文件夹中的名为 getExecute() 的方法, 我希望该方法返回我的 SSH 服务器的完整响应,但这并没有发生。该方法返回的唯一内容是一个空格。

例如:我传递了命令“ls -la”,我的响应是 Linux 找到的所有文件夹,就像在终端上一样。有人能帮助我吗?这是我的代码:

public function getExecute()
{
    if(\Request::ajax()):

        $ssh_command = \Input::get('ssh_command');
        $ssh_response = null;

        \SSH::run($ssh_command, function($line)
        {
            return $line.PHP_EOL;
        });

    endif;
}
Run Code Online (Sandbox Code Playgroud)

OBS:Ajax连接已经测试过了,没问题!谢谢!

ped*_*con 2

终于解决了!解决方案如下:

首先,我在类中创建了一个名为 $output 的变量。

private $output;
Run Code Online (Sandbox Code Playgroud)

然后我将我的方法修改为:

public function postExecute()
{
    $ssh_command = \Input::get('ssh_command');
    $ssh_response = \SSH::run($ssh_command, function($line)
    {
        $this->output = $line.PHP_EOL;
    });

    return $this->output;
}
Run Code Online (Sandbox Code Playgroud)

我的方法不再是 Ajax,但我希望我所要做的就是像以前一样回滚到我的 ajax 方法。谢谢大家!