Mtl*_*Dev 9 ssh terminal wallpaper gnome-terminal
如何根据 ssh 输入的主机名以编程方式更改终端窗口的背景颜色?
即当我通过 ssh 进入生产硬件上的实时嵌入式系统时,我希望终端背景变为红色 - 以“保持对我在哪个服务器上的认识”。在 PS1 中只有主机名并不总是足够的。
我正在使用 gnome-terminal,但会接受 Linux 下任何可行的解决方案。
您可以使用 ssh LocalCommand 发出 ANSI 转义序列来更改背景颜色,并为每个主机(或主机模式)设置一个部分来选择要与远程主机对应的适当颜色。
如果您的生产服务器遵循“以 prod 开头”之类的命名约定,您可以在 ~/.ssh/config 文件中尝试以下代码段:
Host prod*
PermitLocalCommand yes
LocalCommand printf "\x1b[41m\x1b[2JPRODUCTION SYSTEM [%n]\n\n"
如果没有方便的命名约定来使用通配符模式,您可以只列出由空格分隔的主机名。您还可以为各种其他非生产服务器创建具有不同颜色值和字符串的其他主机块。
连接到匹配模式的主机后,会在本地执行对应的printf,将背景色改为红色([41m选择红色作为背景色,[2J部分用更新后的背景色重新绘制整个屏幕。见https://en.wikipedia.org/wiki/ANSI_escape_code更多选项)
这种方法最大的麻烦是在退出 ssh 会话时背景颜色仍然存在;没有对应的 LocalCommand 可以在断开连接时运行(我知道)。ssh 的别名或外壳程序脚本可以printf "\x1b[0m"作为重置调用。另一方面,通过 LocalCommand 设置背景颜色意味着即使 ssh 不是通过包装脚本或别名运行,您也将获得颜色设置。