我正在使用Symfony进程组件来运行远程SSH命令,并且目前正在确保返回的输出已被着色,如下所示:
$process = $this->getRemoteProcess();
$theme = new SolarizedTheme();
$converter = new AnsiToHtmlConverter($theme);
$process->run(function ($type, $output) use ($converter) {
$html = $converter->convert($output);
event(new BroadcastSSHOutput($html));
});
我的SSH连接设置如下:
$delimiter = 'EOF-DOWNSTREAM-APP';
return new Process(
"ssh -tt $this->target 'bash -se' << \\$delimiter".PHP_EOL
.$this->getCommands().PHP_EOL
.$delimiter
);
如果我使用-tt并强制进行伪终端分配,则颜色将完美显示。我面临的问题是,它还显示了正在执行的命令,服务器名称以及您自己通过SSH进入服务器时通常会看到的所有其他内容。
当我省略-tt
标志时,我只会得到命令的输出,而这正是我想要的,但是输出不再是彩色的。
如何确保只返回SSH命令的输出,却返回可以转换为HTML的输出?