サーバコンソールのコマンド送信結果を取得してみよう

こんにちは。今日は建国記念日です。世の中は3連休というものらしいですね。
しかし、私はたまりにたまった仕事のため、3日間休みなしです。大好きなドラクエさえできません。

ちなみに、現在2013年2月度のテクてくの原稿を作成中です。
ご存知の通り、 2月のテクてくではConnect 2013の内容を紹介するのですが・・・
あまりにも情報が多すぎてすべてを紹介するなんてことはできないのです!
ということで、当ブログで小出しにしていこうという魂胆です。

では、久しぶりのボタンクリックをお願いします。
にほんブログ村 IT技術ブログへ


本題に入りましょう。
既存のテクニックなので、知っている人は知っているかと思います。

サーバーコンソールにコマンドを入力することができますが、その結果を確認するには、
  1. サーバーコンソール上で直接コマンドを入力して、その場で確認する
  2. Domino Administratorでサーバーコンソールを開いて、そこで確認する
  3. Lotus Domino Consoleを起動して、サーバーコンソールを開いて、そこで確認する
 というものが考えられますが、ここに第4の方法があるのです。

LotusScriptのNotesSessionクラスにあるSendConsoleCommandメソッドを利用します。
実行するためには、いくつかの条件がありますが、条件をクリアしている場合にはとても便利に利用できます。
クライアントで実行する場合の条件は、サーバー文書の「セキュリティ」タブにある「管理者(フルリモートコンソール)」フィールドに実行者のユーザー名が指定されている必要があります。
サーバー文書の「管理者(フルリモートコンソール)」

サンプルコードは次の通り。
Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db      As     NotesDatabase
    Dim uiws    As New NotesUIWorkspace
    Dim uidoc   As     NotesUIDocument
    Dim ret     As     String
   
    Set db    = session.CurrentDatabase
    Set uidoc = uiws.CurrentDocument
   
    ret = session.SendConsoleCommand( db.Server, "show server" )
   
    Call uidoc.FieldSetText( "result", ret )
End Sub
このサンプルは、ノーツDBの「result」フィールドに、サーバーコンソールコマンドの「show server」の結果を表示するというものです。
実行結果は下図の通り。
show serverの実行結果

今回はサンプルなので、ボタンの中にコマンドを埋め込んでいますが、これもフィールドにして、そこからセットするような形にすれば、自由にコマンドの結果を取得することができます。
サーバーコンソールへのアクセスが制限されている場合などに使ってみてください。


ということで、テクてくの資料作成に戻ります。
では・・・





【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】

単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします

Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

コメント

Unknown さんの投稿…
テクてくも楽しみっ!
御代政彦(Masahiko Miyo) さんの投稿…
Komine さん、コメントありがとうございます。
そうですね、今回のテクてくは新チャンピオンが二人とも講師をしてくれるので、私も今から楽しみです(笑)。