根据 SSH 会话更改终端颜色

根据 SSH 会话更改终端颜色

是否可以根据我通过 SSH 连接的服务器自动更改终端的颜色?

例如,当我启动终端时,它具有我的配置文件下定义的标准颜色。然后我 ssh 到 ssh.example.com,颜色变为黑色和绿色。然后我退出会话,颜色恢复为标准颜色主题。

我知道你可以手动完成。但我正在寻找一种自动化的方法。

答案1

是的,您可以通过更改所连接的每个主机名上的文件PS1值来实现。.bashrcssh

这个答案查看如何根据你的喜好定制 bash 的PS1值。

ssh 彩色

在我的计算机上(radu@Radu),我有.bashrc

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\] \w\[\033[01;37m\] > '

在托管机器(radu@ubuntu)上我有:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35;40m\]\u@ubuntu\[\033[00;40m\]:\[\033[01;34;40m\] \w\[\033[01;32;40m\] > '

答案2

如果你正在使用 xterm,这个方法很有效:https://github.com/fboender/sshbg

它是如何工作的?

黑色 Unix 魔法。好吧,不是真的。好吧,有点……

SSH 允许您在与远程主机建立连接之前运行本地命令。某些终端允许您使用转义序列设置背景颜色。通过在后台轮询父进程 PID,可以检测 SSH 命令是否已从本地执行的命令退出。将这三者结合起来,瞧!背景颜色。

sshbg 将配置文件中的条目(正则表达式)与提供的主机名进行匹配。这将生成一个配置文件名称,该名称具有与之关联的背景颜色。有关更多信息,请参阅本页底部的“配置文件”部分。

安装和使用

要求:

  • Python 版本 3.x+
  • 支持的终端

克隆此 repo:

git clone [email protected]:fboender/sshbg.git
cd sshbg

将脚本复制sshbg到 PATH 中的某个目录,例如:

sudo cp sshbg /usr/local/bin/

sshbg.conf文件复制到~/.config/sshbg.conf

cp sshbg.conf ~/.config/

在您的 SSH 配置中启用LocalCommand配置设置。您可以逐个主机执行此操作,也可以使用通配符。要为所有主机启用它,请使您的 SSH 配置如下所示:

$ cat ~/.ssh/config
PermitLocalCommand yes
Host *
    LocalCommand sshbg "%n"

相关内容