当前位置:  开发笔记 > 编程语言 > 正文

当我ssh到特定服务器时,如何使Apple终端窗口自动更改颜色方案

如何解决《当我ssh到特定服务器时,如何使Apple终端窗口自动更改颜色方案》经验,为你挑选了6个好方法。

当我进入一个远程生产服务器时,我希望我的终端窗口的颜色方案变成一些明亮可怕的颜色,最好是红色,以警告我,我正在触摸一个可怕的服务器.

我怎样才能让它自动检测到我在某个地方ssh'ed,如果某个地方在特定的列表上,改变颜色方案?

我想更新Terminal.app的Scheme,不知道如何在纯linux/unix环境中执行此操作



1> Yurii Soldak..:

将以下脚本放入~/bin/ssh(确保在PATH中~/bin/查看之前/usr/bin/):

#!/bin/sh

HOSTNAME=`echo $@ | sed s/.*@//`

set_bg () {
  osascript -e "tell application \"Terminal\" to set background color of window 1 to $1"
}

on_exit () {
  set_bg "{0, 0, 0, 50000}"
}
trap on_exit EXIT

case $HOSTNAME in
  production1|production2|production3) set_bg "{45000, 0, 0, 50000}" ;;
  *) set_bg "{0, 45000, 0, 50000}" ;;
esac

/usr/bin/ssh "$@"

上面的脚本从"username @ host"行中提取主机名(它假定您使用"ssh user @ host"登录到远程主机).

然后根据主机名称设置红色背景(用于生产服务器)或绿色背景(用于所有其他).因此,所有ssh窗口都将采用彩色背景.

我假设您的默认背景为黑色,因此当您从远程服务器注销时,脚本会将背景颜色恢复为黑色(请参阅"trap on_exit").

请注意,此脚本不会跟踪从一个主机到另一个主机的ssh登录链.因此,如果您首先登录测试服务器,然后从中登录到生产,则后台将为绿色.



2> Chris Page..:

终端的一个鲜为人知的功能是您可以将设置配置文件的名称设置为命令名称,并在通过Shell> New Command ...Shell> New Remote Connection ...创建新终端时选择该配置文件.

例如,复制默认配置文件,将其命名为"ssh"并将其背景颜色设置为红色.然后使用New Command ...运行ssh host.example.com.

它还匹配参数,因此您可以让它为不同的远程主机选择不同的设置.


这对我来说是最好的答案.值得注意的是,配置文件名称可以是正则表达式,例如'ssh.*myserver.*'匹配'ssh myserver','ssh -p 22 myserver.foo.com'等.
我无法相信这是多么有用.就是我在寻找的东西.

3> bingles..:

这是一个基于处理退出的几个现有答案的组合解决方案.如果您不想处理16位颜色值,还包括一些额外的内容.

这应该放在你的〜/ .bash_profile中

# Convert 8 bit r,g,b,a (0-255) to 16 bit r,g,b,a (0-65535)
# to set terminal background.
# r, g, b, a values default to 255
set_bg () {
    r=${1:-255}
    g=${2:-255}
    b=${3:-255}
    a=${4:-255}

    r=$(($r * 256 + $r))
    g=$(($g * 256 + $g))
    b=$(($b * 256 + $b))
    a=$(($a * 256 + $a))

    osascript -e "tell application \"Terminal\" to set background color of window 1 to {$r, $g, $b, $a}"
}

# Set terminal background based on hex rgba values
# r,g,b,a default to FF
set_bg_from_hex() {
    r=${1:-FF}
    g=${2:-FF}
    b=${3:-FF}
    a=${4:-FF}

    set_bg $((16#$r)) $((16#$g)) $((16#$b)) $((16#$s))
}

# Wrapping ssh command with extra functionality
ssh() {
    # If prod server of interest, change bg color
    if ...some check for server list
    then
        set_bg_from_hex 6A 05 0C
    end

    # Call original ssh command
    if command ssh "$@"
    then
        # on exit change back to your default
        set_bg_from_hex 24 34 52
    fi
}

set_bg - 需要4(8位)颜色值

set_bg_from_hex - 需要4个十六进制值.我使用的大多数颜色参考都是十六进制的,所以这对我来说更容易.它可以更进一步实际解析#RRGGBB而不是RR GG BB,但它对我来说效果很好.

ssh - 使用您想要的任何自定义逻辑包装默认的ssh命令.if语句用于处理退出以重置背景颜色.



4> Maxim Yefrem..:

结合答案1和2有以下几点:

创建~/bin/ssh中的说明文件1,内容如下:

#!/bin/sh
# /sf/ask/17360801/
log(){
  echo "$*" >> /tmp/ssh.log
}
HOSTNAME=`echo $@ | sed s/.*@//`
log HOSTNAME=$HOSTNAME
# to avoid changing color for commands like `ssh user@host "some bash script"`
# and to avoid changing color for `git push` command:
if [ $# -gt 3 ] || [[ "$HOSTNAME" = *"git-receive-pack"* ]]; then
  /usr/bin/ssh "$@"
  exit $? 
fi

set_bg () {
  if [ "$1" != "Basic" ]; then
    trap on_exit EXIT;
  fi
  osascript ~/Dropbox/macCommands/StyleTerm.scpt "$1"
}

on_exit () {
  set_bg Basic
}


case $HOSTNAME in
  "178.222.333.44 -p 2222") set_bg "Homebrew" ;;
  "178.222.333.44 -p 22") set_bg "Ocean" ;;
  "192.168.214.111") set_bg "Novel" ;;
  *) set_bg "Grass" ;;
esac

/usr/bin/ssh "$@"

让它可执行:chmod +x ~/bin/ssh.

文件~/Dropbox/macCommands/StyleTerm.scpt具有以下内容:

#https://superuser.com/a/209920/195425
on run argv
  tell application "Terminal" to set current settings of selected tab of front window to first settings set whose name is (item 1 of argv)
end run

单词Basic, Homebrew, Ocean, Novel, Grass来自mac os终端设置cmd,: 终端档案



5> Milhous..:

您可以在.bashrc中设置$ PS1变量.

red='\e[0;31m'
PS1="$\[${red}\]"

编辑:要做到这一点打开终端.然后说

#touch .bashrc

然后,您可以在textEdit或TextWrangler中打开.bashrc 并添加以前的命令.


在要更改为红色的服务器上创建一个〜/ .bashrc文件.(不在你的Mac上)

6> arnon cohen..:

另一个解决方案是在ssh配置文件中设置颜色strait:

在〜/ .ssh/config里面

Host Server1
   HostName x.x.x.x
   User ubuntu
   IdentityFile ~/Desktop/keys/1.pem
   PermitLocalCommand yes
   LocalCommand osascript -e "tell application \"Terminal\" to set background color of window 1 to {27655, 0, 0, -16373}"

Host Server2
   HostName x.x.x.x
   User ubuntu
   IdentityFile ~/Desktop/keys/2.pem
   PermitLocalCommand yes
   LocalCommand osascript -e "tell application \"Terminal\" to set background color of window 1 to {37655, 0, 0, -16373}"

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有