В настоящее время у меня все настроено и готово выполнять удаленные команды с использованием 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