Нет ничего, что вы могли бы сделать, чтобы сделать эту работу с помощью Laravel SSH. Однако компонент SSH от Laravel использует phpseclib SSH внутренне, что является более гибким при использовании напрямую.
Теперь я предполагаю, что вы пытаетесь создать сеанс tmux
, чтобы начать процесс, который вы хотите продолжить работать в фоновом режиме после завершения соединения SSH. Хорошая часть состоит в том, что поскольку phpseclib является зависимостью от Laravel SSH, он уже существует, поэтому нет необходимости устанавливать его. Я не очень хорошо знаком с tmux
и это варианты, но я могу предложить решение, которое использует screen
вместо:
use \phpseclib\Net\SSH2;
use \phpseclib\File\ANSI;
$ssh = new SSH2('host');
$ansi = new ANSI();
if ($ssh->login('username', 'password')) {
// The command below will start a screen
// session and automatically detach it
$ssh->write("screen -m -d -S processes top\n");
// You can include the lines below to see the
// output of the write command converted to HTML
$ansi->appendString($ssh->read());
echo $ansi->getScreen();
}
Это создает новый сеанс автоматически отдельностоящий screen
имени processes
и запускает команду top
в нем. Для подключения к сеансу вы можете просто запустить это в консоли:
ssh [email protected] -t "screen -r processes"
Это будет повторно подключить сеанс processes
, так что вы можете увидеть, что происходит. Конечно, вы можете приспособить это, чтобы использовать tmux
, если вы предпочитаете.