ログ監視とか複数サーバーで同時に作業を行うことが多い方に・・・
Poderosaというターミナルアプリケーション(Windows用)で複数のサーバーに一気につないじゃう(そして必要であればコマンドも複数発行しちゃう!)方法を教えます。
Poderosaの詳細は下記より
Terminal Emulator Poderosa
※ただし、上記は開発が終了しておりますのでアプリケーション本体は下記からダウンロードしてください。
Poderosa Project on sourceforge ※sourceforgeにて開発が再開したそうです。
ちなみに動作確認は4.3.5b にて行いました。
まずはどんなことになるのか画像にてご紹介します!
—- やり方はここから —-
まずはPoderosa本体を起動します。
Poderosaは画面を分割出来てすごく便利なので、例えばこのように4分割も出来ますし
縦に6分割とかも出来ます!超便利!
後にご紹介するスクリプトをファイルにしたものをマクロとしてPoderosaに登録します。
マクロファイルの配置はPoderosaのインストールフォルダ内のMacroフォルダでいいと思います。
メニューから[ツール]→[マクロ]→[環境設定] をクリックします。
初めて登録する場合は画面の「新規」ボタンを押して
「タイトル」「ファイル」(マクロファイルの指定)、「追加のアセンブリ」(今回不使用)と
「このマクロを実行するときトレースウィンドウを開く」(任意)を設定します。
例では
タイトル「複数ログイン」
ファイル「(Poderosaインストールフォルダ)\Macro\MultiAutoLogin.js」
そして
「このマクロを実行するとき~」でログウィンドウを出すようにしてます。
登録が終わったらメニューから実行します。
[ツール]→[マクロ]→[複数ログイン(※例の場合)]と選択すると実行します。
実行結果は・・・こんな感じ
↓↓↓↓
ポコポコっとログイン処理(+コマンド)を行い
処理完了でメッセージ表示します。
※これ、不要かもしれないですね・・・
※不要な方は「env.Util.MessageBox(“処理終了しました!”);」をコメントアウトなり削除なりしてください。
で、そのマクロは下記のソースになります。
このソースをコピペして必要箇所を適宜修正したあと
UTF-8エンコード(bomなし)にてファイル作成します。
ファイル名を「MultiAutoLogin.js」にします。
で、~やり方~の通り設定してみてください。
「ターミナル1」~「ターミナル4」の部分は3まででもいいし逆に8まででもOKです。
増減は配列の数(カギ括弧内の数字)に気をつけてコピペ・削除してください。
[java]
/**
* 複数の接続を一気に行うマクロ
* MultiAutoLogin.js
*/
import Poderosa;
import Poderosa.ConnectionParam;
import Poderosa.Terminal;
import Poderosa.Macro;
var env = new Environment();
// エンコード ※エンコードはすべてUTF8のつもりで書いています。
var ENCODE_TYPE = EncodingType.UTF8;
// 接続先リスト
var hostList = new Array();
// —- ターミナル1 —-
hostList[0] = new Array();
hostList[0][‘host’] = "www.example.ext"; // ドメイン OR IP
hostList[0][‘id’] = "hogeuser"; // ログインアカウント
hostList[0][‘pwd’] = "hogepass"; // ログインパスワード
hostList[0][‘title’] = "Terminal 1"; // タブのタイトル
// 実行コマンドがあれば定義
hostList[0][‘commands’] = new Array(); // コマンド発行の場合必要(任意)
hostList[0][‘commands’][0] = "pwd"; // コマンド1(任意)
hostList[0][‘commands’][1] = "ls -lat"; // コマンド2(任意)
// —- ターミナル2 —-
hostList[1] = new Array();
hostList[1][‘host’] = "www.example1.ext";
hostList[1][‘id’] = "hogeuser";
hostList[1][‘pwd’] = "hogepass";
hostList[1][‘title’] = "Terminal 2";
// 実行コマンドがあれば定義
hostList[1][‘commands’] = new Array();
hostList[1][‘commands’][0] = "cd /var/www/html";
hostList[1][‘commands’][1] = "pwd";
// —- ターミナル3 —-
hostList[2] = new Array();
hostList[2][‘host’] = "www.example2.ext";
hostList[2][‘id’] = "hogeuser";
hostList[2][‘pwd’] = "hogepass";
hostList[2][‘title’] = "Terminal 3";
// 実行コマンドがなければ定義しなくて良い
// hostList[2][‘commands’][0] = "cd /var/www/logs";
// hostList[2][‘commands’][1] = "tail -f error_log";
// —- ターミナル4 —-
hostList[3] = new Array();
hostList[3][‘host’] = "www.example3.ext";
hostList[3][‘id’] = "hogeuser";
hostList[3][‘pwd’] = "hogepass";
hostList[3][‘title’] = "Terminal 4";
// 実行コマンドがなければ定義しなくて良い
// hostList[3][‘commands’][0] = "";
// SSH接続
for (var i = 0; i < hostList.length; i++) { var conn = connect(hostList[i][‘host’], ConnectionMethod.SSH2, 22, ENCODE_TYPE, hostList[i][‘id’], hostList[i][‘pwd’], hostList[i][‘title’]); if (hostList[i][‘commands’]) { if (hostList[i][‘commands’].length > 0) {
for (var j = 0; j < hostList[i][‘commands’].length; j ++) {
sendln(hostList[i][‘commands’][j], conn);
}
}
}
}
env.Util.MessageBox("処理終了しました!");
// SSH接続
function connect(host, method, port, encoding, id, password, title) {
var param = new SSHTerminalParam(method, host, id, password);
param.Caption = title+"["+host+"]";
param.Port = port;
param.Encoding = encoding;
var connection = env.Connections.Open(param);
return connection;
}
function sendln(s, connection) {
connection.TransmitLn(s);
}
[/java]
※このソースはもともとPoderosaインストールフォルダのMacroのSampleにあったソースを参考にして組み立てました。
※ソース内にもありますがUTF8ではないサーバーが含まれる場合はエンコードも条件として追加すればOKです。(’title’同様にすればいいはず・・・)
※ちょっとコマンド実行できない場合があります。プロンプト待って実行という風に改造できればいいんですが・・・
この記事で「助かった~!」という方がいらっしゃいましたら幸いです。