在终端中添加静态文本层/栏

在终端中添加静态文本层/栏

我有一个脚本,用于自动生成 SSH 的端口转发,因为我一整天都在不同服务器上的多个终端窗口中工作,这会检查端口是否已映射到我的一端,如果是,则将其与+1 直到找到可用的端口。然后它回显端口转发信息并运行ssh -L<port1>:localhost:<port2> <server>。简单的。

当我有很多输出并且不记得端口最初映射到什么时,我必须一直向上滚动(艰苦的工作)才能找到它。这让我想到可能有某种包装器可以在顶部添加单行或多行文本,然后在其下面添加 ssh 会话?我冒昧地画了一个基本草图:

草图

我试过用谷歌搜索这个,但我很难找到任何东西。如果存在,命令可能如下所示:wrapper --text="Port forwards: L5901:localhost:5900, L8080:localhost:80" --command="ssh -L<port1>:localhost:<port2> <server>"

也许使用 screen 也是一种解决方案,但我希望能够使用一个命令运行“整个事情”(添加文本行+在其下面启动 SSH 会话)。

答案1

我只需设置 Gnome 标题栏,它会显示您在窗口顶部设置的内容。

要防止 bash 更改标题,请使用:

PROMPT_COMMAND=''
PS1='$ '

(PROMPT_COMMAND 或 PS1 可能会尝试更改标题栏),然后使用以下命令设置标题:

echo -ne "\033]0;new title with port number found\007"

确保服务器上的 PS1 也没有设置标题。为此,您可以在您的~/.bashrc

if [ ! -z "$SSH_CLIENT" ] ; then
   PS1='$ '
fi

(上述内容在运行 Ubuntu 12.04 的服务器上是必需的)。

并运行你的ssh命令:

ssh -t user@server "PROMPT_COMMAND='' bash -l"

您的 PS1 和 PROMPT_COMMAND 可以更复杂,只要它们不尝试通过某些转义序列设置标题栏(使用\033]0;\e]0;

任何涉及 的解决方案tmuxscreen以及任何基于诅咒的屏幕行保留都会禁用 Gnome 终端滚动条的适当滚动。

相关内容