题 当我ssh服务器时,如何自动更改终端颜色?


我经常从我的os x终端窗口登录到不同的服务器。

我想为不同的主机分配一个配色方案,这样我的终端窗口就更容易辨别了。这可以自动完成吗?


14
2018-04-08 07:00






答案:


这是一个完整的解决方案。在〜/ .server_colors中保留服务器IP地址和/或域的列表以及所需的颜色:

192.168.122.102,红沙
192.168.122.103,海洋
www.foo.com,草
foo.com,草

然后将此行添加到〜/ .profile以劫持ssh命令:

别名ssh =“〜/ bin / safe_ssh $ 1”

然后将ssh目标中@之后的任何内容与列表进行比较。如果匹配,请运行AppleScript将屏幕更改为相应的颜色。这是〜/ bin / safe_ssh:

#!/斌/庆典
ip =`echo $ 1 |切-d“@” -  f2`
match =`cat~ / .server_colors | grep $ ip | wc -l`
如果[$ match -gt 0]
然后
    color =`cat~ / .server_colors | grep $ ip | cut -f2 -d“,”`
    osascript~ / bin / change_terminal_color.scpt“$ color”2> / dev / null
科幻
/ usr / bin / ssh $ 1

最后,这是〜/ bin / change_terminal_color.scpt

在运行argv
    告诉应用程序“终端”将窗口1的所选选项卡的当前设置设置为(名称为(argv的第1项)的第一个设置)
结束

我从中获取了大部分代码 这篇博文


11
2018-04-02 23:32



非常好。在safe_ssh脚本中,$ 1应为$ @以允许传递SSH的额外参数。也许在ssh之后调用将终端返回到默认值。最后一次编辑会使这非常完美:支持不包含'@'的SSH命令。 - nOw2


是。

要么使用例如“屏幕”并自定义它: http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html

或者,如果可能,您可以在SSH客户端上执行此操作。

你也可以试试这个: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/


2
2018-04-08 07:21





@muirbot的解决方案对我来说非常有用。我对此做了一些改进。一旦我有足够的声誉,我会将它添加到他的帖子下面。

更换线

IP =echo $1 | cut -d"@" -f2
 同
IP =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

此更改允许为ssh命令提供其他参数,例如“ssh -p 1111 userName @ host”

正则表达式允许简单的ipv4地址和域名。

要进一步支持多个参数,请将最后一行更改为

/ usr / bin / ssh $ @


2
2017-08-31 12:40





我只是在找同样的东西,发现这篇文章:

http://akrabat.com/php/osx-terminal-colours/

它使用php脚本通过applescript更改终端颜色。您可以为每个服务器设置不同颜色的映射。对我来说很有用,虽然觉得有必要将php内容重写成ruby :)

FK


0
2017-07-01 11:24





我使用的脚本在xterm窗口中使用不同的bg / fg颜色启动SSH。它根据颜色范围内的主机名哈希选择颜色,因此不需要进行任何配置。

该脚本是用Ruby编写的: https://github.com/mickeyil/ssx


0
2017-12-07 18:53





如果您使用的是iTerm2,请创建一个名为的文件 ~/bin/ssh-host-color.sh 来自的内容 https://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

并将以下行添加到您的 ~/.aliases.sh 文件:

alias ssh="~/bin/ssh-host-color.sh $@"

0
2018-02-07 11:23