この記事の所要時間: 1217

ログ監視とか複数サーバーで同時に作業を行うことが多い方に・・・
Poderosaというターミナルアプリケーション(Windows用)で複数のサーバーに一気につないじゃう(そして必要であればコマンドも複数発行しちゃう!)方法を教えます。

2012/09/12 改行コードも変更出来るように改造しました。

2012/09/12 文字エンコードを変更出来るように改造しました。

2012/08/07 ポート番号を変更出来るように改造しました。

Poderosaの詳細は下記より
Terminal Emulator Poderosa
※ただし、上記は開発が終了しておりますのでアプリケーション本体は下記からダウンロードしてください。
Poderosa Project on sourceforge ※sourceforgeにて開発が再開したそうです。

ちなみに動作確認は4.3.5b にて行いました。

まずはどんなことになるのか画像にてご紹介します!

[adsense]

—- やり方はここから —-
Poderosa(予め接続サーバー数分割しておくと便利!)
まずはPoderosa本体を起動します。
Poderosaは画面を分割出来てすごく便利なので、例えばこのように4分割も出来ますし
縦に6分割とかも出来ます!超便利!


マクロ登録
後にご紹介するスクリプトをファイルにしたものをマクロとしてPoderosaに登録します。
マクロファイルの配置はPoderosaのインストールフォルダ内のMacroフォルダでいいと思います。
メニューから[ツール]→[マクロ]→[環境設定] をクリックします。


マクロ設定
初めて登録する場合は画面の「新規」ボタンを押して
「タイトル」「ファイル」(マクロファイルの指定)、「追加のアセンブリ」(今回不使用)と
「このマクロを実行するときトレースウィンドウを開く」(任意)を設定します。
例では
タイトル「複数ログイン」
ファイル「(Poderosaインストールフォルダ)\Macro\MultiAutoLogin.js」
そして
「このマクロを実行するとき~」でログウィンドウを出すようにしてます。


マクロ実行!
登録が終わったらメニューから実行します。
[ツール]→[マクロ]→[複数ログイン(※例の場合)]と選択すると実行します。


実行結果は・・・こんな感じ
↓↓↓↓
実行後
ポコポコっとログイン処理(+コマンド)を行い
処理完了でメッセージ表示します。
※これ、不要かもしれないですね・・・
※不要な方は「env.Util.MessageBox(“処理終了しました!”);」をコメントアウトなり削除なりしてください。

で、その Poderosa マクロ は下記のソースになります。
このソースをコピペして必要箇所を適宜修正したあと
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();
// デフォルト文字エンコード
// 日本語例 EncodingType.EUC_JP, EncodingType.SHIFT_JIS, EncodingType.UTF8
var ENCODE_TYPE = EncodingType.UTF8;
// デフォルト改行コード
// 改行コード例
// NewLine.CR:’\r’
// NewLine.LF:’\n’
// NewLine.CRLF:’\r’,’\n’
var NEWLINE_CHAR = NewLine.LF;
// デフォルトSSHポート番号
var SSH_PORT = 22;
// 接続先リスト
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][‘port’] = 10022; // SSHのポートを変更している場合は設定する
hostList[0][‘encode’] = EncodingType.EUC_JP; // エンコードがデフォルト値以外の場合設定する
hostList[0][‘newline_char’] = NewLine.CR; // 改行コードがデフォルト値以外の場合設定する
// 実行コマンドがあれば定義
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][‘port’] = 22; // SSHのポートを変更していない場合は設定しないでOK
//hostList[1][‘encode’] = EncodingType.UTF8; // エンコードがデフォルト値と同じであれば設定しないでOK
//hostList[1][‘newline_char’] = NewLine.LF; // 改行コードがデフォルト値と同じであれば設定しないでOK
// 実行コマンドがあれば定義
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 ssh_port_num = SSH_PORT; if (hostList[i]['port'] != null && hostList[i]['port'] != SSH_PORT) { ssh_port_num = hostList[i]['port']; } var encoding_type = ENCODE_TYPE; if (hostList[i]['encode'] != null && hostList[i]['encode'] != ENCODE_TYPE) { encoding_type = hostList[i]['encode']; } var newline_char = NEWLINE_CHAR; if (hostList[i]['newline_char'] != null && hostList[i]['newline_char'] != NEWLINE_CHAR) { newline_char = hostList[i]['newline_char']; } var conn = connect(hostList[i]['host'], ConnectionMethod.SSH2, ssh_port_num, encoding_type, newline_char, 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, newline_char, id, password, title) { var param = new SSHTerminalParam(method, host, id, password); param.Caption = title+"["+host+"]"; param.Port = port; param.Encoding = encoding; param.TransmitNL = newline_char; var connection = env.Connections.Open(param); return connection; } function sendln(s, connection) { connection.TransmitLn(s); } [/java] ※このソースはもともとPoderosaインストールフォルダのMacroのSampleにあったソースを参考にして組み立てました。
※ソース内にもありますがUTF8ではないサーバーが含まれる場合はエンコードも条件として追加すればOKです。(’title’同様にすればいいはず・・・)※2012/09/13改造済み
※ちょっとコマンド実行できない場合があります。プロンプト待って実行という風に改造できればいいんですが・・・

※文字エンコードと改行コードを接続毎に変更出来るようにしました。改行コードの部分はソース内複数箇所に修正が入りますので下記画像を参考に修正点を見なおして下さい。
PODEROSAマクロ変更点

この記事で「助かった~!」という方がいらっしゃいましたら幸いです。

Poderosaマクロファイルをダウンロード出来るようにしました。

Poderosaマクロファイルをダウンロード出来るようにしました。
ファイル形式が「.js」のため、ZIP形式に圧縮しております。
ダウンロードへ
※Facebookにログインして「いいね!」を押していただいた方に限ります。よろしくお願いします。


ダウンロードページはこのブログのメニューに移動しました。
株式会社ジーティーアイ Facebookページに「いいね!」を押してくださるとダウンロードコンテンツを含むブログの重要更新がお知らせされます!是非「いいね!」してくださいね!

この記事が気に入ったら
いいね ! しよう

Twitter で