以前、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)