Laravel Collective Remote |Можно ли получить живой выход? - PullRequest
0 голосов
/ 22 октября 2019

В настоящее время у меня все настроено и готово выполнять удаленные команды с использованием ssh на всех серверах в моей базе данных, но я хотел бы отобразить вывод в реальном времени пользователю запущенных команд, я видел, как это делалось раньше, какна TinyCP и некоторых других панелях управления VPS, но я не был уверен, сможет ли это сделать пакет Laravel Collective Remote.

Что я пытался

Я пытался сделать несколько вещей, один изони делают логику php в файле blade-сервера и просто включают ее, когда мне нужно, как показано ниже.

<div>
<?php
    try {
        $server = \App\Models\Server::first();
        config([
            'remote.connections.remote-server.host'     =>
$server['hostname'],
            'remote.connections.remote-server.username' => $server['user'],
            'remote.connections.remote-server.password' => $server['password'],
        ]);
        $commands = array(
            "apt-get update",
        );
        \SSH::into('remote-server')->
run($commands, function ($line) {
            echo nl2br($line);
        });
    } catch (\Exception $e) {
        echo($e);
    }
?>

Я думал, что это достигнет того, что я хотел, потому что у меня сложилось впечатлениечто функция будет активироваться в каждой строке почти в цикле, но она ожидает, пока ее полностью не завершится, чтобы вывести строки. Вывод, который я получил, показан ниже.

Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Fetched 252 kB in 1s (170 kB/s)
Reading package lists...

Пример вывода, который я хочу

Я хочу получить вывод туда, где я могу отформатировать, чтобы я выглядел как терминал, либо черезпользовательское css или использование xterm.js .

Пример терминала Xterm.js Xterm.js's example of a terminal

...