LoginSignup
5
5

More than 5 years have passed since last update.

poderosaのマクロでログ監視

Posted at

複数サーバのログ監視をするのにマクロを組んでみた。
Poderosaのツール>マクロからファイルを実行

1.serverListに接続するサーバ一覧を定義
2.waitで$を待ってから
3.sendlnでtailコマンドを実行

log.js
import Poderosa;
import Poderosa.Macro;
import Poderosa.ConnectionParam;
import Poderosa.Terminal;
import Poderosa.View;
import System.Drawing;
import System.Threading;

// 接続先サーバ
var serverList = [
    { hostname : "タブに表示する名前", host : "接続先IP", port : 接続先ポート, account : "接続ユーザ", password : "パスワード" }
]

for(var i = 0; i < serverList.length; i++){
    var server = serverList[i];
    connect(server.hostname, server.host, server.port, server.account, server.password);
}

/**
 * サーバへ接続
 * @param hostname タブに表示する名前
 * @param host 接続先IP
 * @param port ポート
 * @param account アカウント
 * @param password パスワード
 */
function connect(hostname, host, port, account, password){
    var param = new SSHTerminalParam(ConnectionMethod.SSH2, host, account, password);
    param.Caption = hostname;
    param.Port = port;
    param.Encoding = EncodingType.UTF8;

    var env = new Environment();
    var connection = env.Connections.Open(param);
    wait(connection, "$");
    sendln(connection, "tail -f /usr/local/tomcat/logs/catalina.out");
}

/**
 * 指定の文字列を待つ
 * @param connection 接続先
 * @param command 待機する文字列
 */
function wait(connection, command) {
    Thread.Sleep(10);
    var res = connection.ReceiveData();
    while(res.indexOf(command) == -1) {
        Thread.Sleep(10);
        res += connection.ReceiveData();
    }
}

/**
 * コマンドを送信する
 * @param connection 接続先
 * @param command 送信するコマンド
 */
function sendln(connection, command) {
    connection.TransmitLn(command);
}
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5