我有一个脚本,用于自动生成 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;
)
任何涉及 的解决方案tmux
,screen
以及任何基于诅咒的屏幕行保留都会禁用 Gnome 终端滚动条的适当滚动。