当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2013年2月11日月曜日

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

こんにちは。今日は建国記念日です。世の中は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 カスタマイズとセキュリティ強化 - 株式会社エフ

2 件のコメント:

Hiro-aki Komine さんのコメント...

テクてくも楽しみっ!

Masahiko Miyo さんのコメント...

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