SSH服务器时如何自动更改终端颜色?


14

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

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

Answers:


11

这是一个完整的解决方案。在〜/ .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:

#!/ bin / bash
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
    告诉应用程序“ Terminal”将窗口1的选定选项卡的当前设置设置为(第一个设置为名称(argv的项目1))
结束运行

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


1
非常好。在safe_ssh脚本中,$ 1应该是$ @,以允许将其他参数传递给SSH。也许也可以在ssh之后调用以将终端恢复为默认值。最后一个编辑将使它非常完美:支持不包含“ @”的SSH命令。
13年


2

@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 $ @


0

我只是在寻找同一件事,发现了这篇文章:

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

它使用php脚本通过applescript更改终端颜色。您可以为每个服务器设置不同颜色的映射。对我来说效果很好,尽管有将php内容重写为ruby的冲动:)

k


0

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

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


0

如果使用的是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 $@"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.