interprism's blog

インタープリズム株式会社の開発者ブログです。

ssh で接続サーバー毎にターミナルの背景色を変える方法

この投稿は インタープリズム的「俺達私達の進捗を上げる25個前後のTips」 Advent Calendar 2015 - Qiitaの25日目 の記事です。

仕事に役立つTipsのということで、sshで接続サーバー毎にターミナルの背景色を変える方法を紹介します。

接続するサーバーを間違えたことはありませんか?

そんな経験をしたことがある方は、今回紹介する方法でその間違えを減らせる(かもしれません。)

普段MacでiTermを使って作業してますのでこの構成をメインに

実際自分が作業している設定に加え、少し試したことも紹介しようと思います。

今回紹介する方法の動作環境

  1. OS : Mac OSX El Capitan
  2. アプリ : iTerm2/ターミナル

準備

ssh 接続できる環境が欲しかったので、 vagrant で適当にvmを立てました。

2つのvmを起動し、それぞれsshでhost名で接続できるように設定をしました。

Host prod
  HostName 192.168.33.20
  User vagrant
  Port 22
  IdentityFile vagrantのリポジトリ/.vagrant/machines/default/virtualbox/private_key

Host stg
  HostName 192.168.33.30
  User vagrant
  Port 22
  IdentityFile vagrantのリポジトリ/.vagrant/machines/default/virtualbox/private_key

Mac の iTerm で 背景色を変えてみる

準備も整ったのでやってみます。

とは言ってもそこまでやることは無いのですが。。。

https://gist.github.com/BugRoger/789887 こちらを参考にさせてもらっています。

  • 実行できる場所に適当にファイルを作成します。(今回は、~/bin/ssh-iterm-setting に作成)
  • 作成したファイルに 755で権限設定
  • 作成したファイルに下記の内容を記述
#!/bin/zsh
# ~/bin/ssh-iterm-setting

set_color() {
  local HEX_BG=$1
  local OPACITY=$2

  local BG_R=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$1 * 257)}'`
  local BG_G=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$2 * 257)}'`
  local BG_B=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$3 * 257)}'`

  /usr/bin/osascript <<EOF
tell application "iTerm"
   tell current session of current terminal
      set background color to {$BG_R, $BG_G, $BG_B} 
      set transparency to "$OPACITY" 
   end tell
end tell
EOF
}

# 接続host名で振り分け
if [[ "$@" =~ stg ]]; then
   # 色・透明度設定
   set_color 000033 0.2 
elif [[ "$@" =~ prod ]]; then
   set_color 330000 0.2
fi

ssh $@

set_color 000000 0.2
  • alias を作る(.zshrc でも .bashrc でも環境に合わせてください)
alias ssh='~/bin/ssh-iterm-setting'

f:id:interprism:20151222024635g:plain

できました。簡単ですね。後はお好みにカスタマイズしてください。

ここまでで紹介したいことは終わりです。。。

が、これ背景設定変えたくなった時面倒じゃない?って思ってしまいました。。。

なので、ちょっと遊んで試してみました。

Profile を指定して同じことが出来るのではないかと!

結果同じことはできませんでした。。。(誰か教えてください。。。)

同じことはできなかったのですが、sshで接続する際に別のタブを開く方法だったらできたので、紹介です。

  • 構成

    • ~/bin/ssh-iterm-profile-setting (ssh コマンド実行時の Profile設定)
    • ~/bin/ssh-connect (ssh 接続と切断時にTabを閉じる)
    • stg」「prod」という名前でProfileを作成
  • 記述内容

#!/bin/zsh
# ~/bin/ssh-iterm-profile-setting

set_profile() {
   local profile=$1
   /usr/bin/osascript <<EOF
tell application "iTerm"
  tell current terminal
    launch session "$profile"
  end tell
  tell current session of current terminal
    write text "~/bin/ssh-connect $@"
  end tell
end tell
EOF
}

if [[ "$@" =~ stg ]]; then
   # 作成したプロファイルの名前
   set_profile "stg"
elif [[ "$@" =~ prod ]]; then
   set_profile "prod"
fi
 
#!/bin/zsh
#~/bin/ssh-connect

close_tab() {
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell current session of current terminal
    write text "exit"
  end tell
end tell
EOF
}

ssh $@

close_tab

f:id:interprism:20151222024323g:plain

これで、接続先毎にProfileを適用することが出来るようになりました。

別タブになってしまうのに目が潰れる方はこちらの方が良いかも?

Mac の ターミナル で 背景色を変えてみる

ターミナル使って作業してるんだけど。。。って方もいると思いますので、こちらの方法もご紹介。

やっていることは、iTermの時と同じです。なので設定内容だけ。

#!/bin/zsh

set_color() {
  local HEX_BG=$1

  local BG_R=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$1 * 257)}'`
  local BG_G=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$2 * 257)}'`
  local BG_B=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$3 * 257)}'`
   /usr/bin/osascript <<EOF
tell application "Terminal"
   tell window 0
      set the background color to {$BG_R, $BG_G, $BG_B}
   end tell
end tell
EOF
}

set_profile() {
  local profile=$1
  /usr/bin/osascript <<EOF
tell application "Terminal" to set current settings of first window to settings set "$profile"
EOF
}

if [[ "$@" =~ stg ]]; then
   set_profile "Basic"
elif [[ "$@" =~ prod ]]; then
   set_color C80000
fi

ssh $@

set_profile "Pro"

f:id:interprism:20151222024701g:plain

お気づきでしょうか?

そう。ターミナルだと操作しているウィンドウをProfileの状態にできるのです。

衝撃です。iTermでもやりたいんです。私は。。。

まとめ?

ご紹介なのでまとめも何もないのですが、踏み台サーバー経由とかでもsshの設定で ProxyCommand使ってみたりすれば大体のssh接続で見た目を変えることができると思います。

活用頂き、少しでも気持ち良く作業が出来るようになれば幸いです。

インタープリズムのページ

広告を非表示にする

PAGE TOP