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)