Ubuntuのターミナルでタブを複数起動させて、タブごとに別サーバにログインしたい時

以前、expectコマンドが便利な件(http://shinodogg.com/?p=1886)というエントリを書いたように、

#!/usr/bin/expect
send "ssh 対象サーバ\n"
expect "password:"
send "パスワード\n"
interact

こんな感じでローカルのスクリプト叩いてSSHでサーバにログインしたり、
ついでにアレやコレやできるようにしてたのですが、
Shift+Ctrl+T
で、頑張ってタブをたくさん立ち上げて、それぞれのタブでスクリプト叩いてました。
最近、サービスにサーバを増強する案件があって、ただでさえ何十サーバーもあるのに、、、的な感じで。。
 
ちょっと調べると

gnome-terminal --tab

で、新しくターミナル立ち上げてタブが出現します。
 
複数のタブを立ち上げたかったら

gnome-terminal --tab --tab

にするとタブが2つ立ち上がります。
 
で、オプションみてたら、、

$ gnome-terminal --help-terminal-options
用法:
  gnome-terminal [オプション...]

端末のオプション (引数の先頭で --window や --tab を指定すると、すべてのタブやウィンドウに適用される):
  -e, --command                   端末内でこのオプションに対する引数を実行する
  --profile=PROFILE-NAME          指定したプロファイルを使用する
  -t, --title=TITLE               端末のタイトルを指定する
  --working-directory=DIRNAME     作業用ディレクトリを指定する
  --zoom=ZOOM                     端末の拡大率を指定する (1.0 = 標準サイズ)

コレって -e でコマンド指定できるじゃないですか!と。
 
ってことで、、、

gnome-terminal --tab -e "サーバ1にSSHでログイン" --tab -e "サーバ2にSSHでログイン" --tab -e "サーバ3にSSHでログイン"

ぬおぉ。。便利。。。
 
まぁCapistranoとか使ってこんな事しなくても、うまい事やれるようにすればイイのですが、
全サーバー入ってhogehogeしたい!って時あったらすこぶるおすすめです。
 

そいういえば、ついでに、、、
 
ローカル⇒サーバA⇒サーバB
みたいな感じで処理叩く時に、サーバB上で普通にexpectしてもダメだったので、
expect_tty “正規表現”
してからsendしてるんだけど、やけに待ち時間が長かったりするんですが、
そもそもexpectの仕掛け(っていうかtcl/tk?)がちゃんと分かってないのでアレなんですが、
制御する端末をサーバBに移してイイ感じにexpectとsendでやりくり出来ないのかな…。
 

ついでにその2、、、
gnome-terminalで開く端末の大きさが指定出来る。
↓のブログで知ったのですが、 –geometry 便利。
gnome-terminalのサイズの指定方法(http://project-p.jp/halt/?p=845)
 

Ubuntu10.10完全ガイド (INFOREST MOOK PC・GIGA特別集中講座 408)
インフォレスト (2010-11-09)
売り上げランキング: 7192

シェアする

  • このエントリーをはてなブックマークに追加

フォローする