TOPサーバ構築・運用> UNIX上のログファイルをイベントログ形式で参照する(続き)
Samba 4.0
Samba最新動向

第3回:Samba 3.0.20以降の新機能を追え(2)

著者:たかはしもとのぶ   2007/8/21
前のページ  1  2  3  次のページ
UNIX上のログファイルをイベントログ形式で参照する(続き)

   ここまでの設定でメッセージの表示自体は行えるようになりました。しかし図2のように「イベント ID (1000) (ソース Syslog 内) に関する説明が見つかりませんでした。...」という記載が続いたあと、一番最後に「smbd[1583]...」からはじまる実際のログの内容が記載されています。
UNIXのログファイルをイベントログのインターフェースで参照する
図2:UNIXのログファイルをイベントログのインターフェースで参照する

   これはメッセージテーブルDLLが存在しない場合に発生するものでSamba特有の問題ではありません。このエラーメッセージを抑止するには、Windows側でメッセージテーブルDLLを作成のうえ、配置する必要があります。メッセージテーブルDLLの作成方法についてはWindowsの技術情報を参照してください。

   例えばメッセージDLLを「messages.dll」という名称で作成した場合、先ほど作成したC$共有の下Windows/system32というディレクトリを作成し、そこにmessages.dllを配置したうえで下記のようにします。

# eventlogadm -o addsource Messages Syslog %SystemRoot%/System32/messages.dll

   しかし、筆者の方ではこの機能の動作を確認できていませんが(注2)、ここではカスタムログ名(上記ではMessages)、ソース名(上記ではSyslog)、登録するメッセージテーブルDLL名を指定することで適切な表示が可能となるといいます。

※注2: AUXSOURCEフラグも試しており、Samba側に配置したメッセージテーブルDLLへのアクセスも確認していますが、うまく動作していません。

   取りあえずということであれば、すでにWindows側で配置済のメッセージDLLが登録しているカスタムログ名やソース、イベントIDを借用してしまうのがよいでしょう。例えばeventlogadmフォーマットで下記のように指定することで、WSHのLogEventメソッドが利用するソースやイベントIDを用いて出力が行われますので、図3のように表示ができます。

ETP: SUCCESS
EID: 0
SRC: WSH

イベントのプロパティ
図3:イベントのプロパティ
(画像をクリックすると別ウィンドウに拡大図を表示します)


デーモンの起動、停止をWindowsから実施する:Samba 3.0.21〜

   Samba 3.0.21以降では、図4のようにUNIX上のデーモンをWindowsのサービスインターフェースを経由して制御する機能が追加されました。

デーモンの状況をWindowsから参照したところ
図4:デーモンの状況をWindowsから参照したところ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   これは以下の手順で設定可能です。

  1. SambaのLIBDIR(通常smb.confが存在しているディレクトリ)以下にsvcctlというディレクトリを作成する
  2. 制御対象としたい起動スクリプト(通常/etc/init.d以下に存在)のシンボリックリンク(またはコピー)を作成する
  3. 起動スクリプト名をsvcctl listパラメータの値として空白で区切って列挙する

表3:NIX上のデーモンをWindowsのサービスインターフェースを経由して制御する手順

   例えば、inetdとexim4をこの制御下に置きたい場合は下記のようにシンボリックリンクを作成します。

# cd /usr/local/samba/lib/svcctl ← Sambaのインストール箇所に依存
# ln -s /etc/init.d/inetd .
# ln -s /etc/init.d/exim4 .

   そのあと上smb.confで下記のように設定します。

[global]

  ...
  svcctl list = exim4 inetd


   ただし起動スクリプトは、以下のような条件を満たす必要があります。

  1. startを引数とすることでデーモンが起動する。起動に成功すると0を返却する
  2. stop を引数とすることでデーモンを終了させる。終了に成功すると0を返却する
  3. status を引数とすることで、デーモンの起動状況を確認する。起動している場合は0、それ以外の場合は1を返却する

表:起動スクリプトが満たす条件

   Debian GNU/Linuxの起動スクリプトでは、statusという引数がサポートされていないので、下記のようにしてstatus引数の処理を追加する必要があります。

status引数のサポート例(inetdの場合)
    status)
        if [ "pgrep inetd | wc -l | grep -v grep`" == "0" ] ; then
          exit 1
        else
          exit 0
        fi
        ;;

前のページ  1  2  3  次のページ


たかはしもとのぶ
著者プロフィール
たかはしもとのぶ
1970年生まれ。1993年早稲田大学第一文学部哲学科卒。同年NTTデータ通信株式会社(現:株式会社NTTデータ)に入社。
クライアント・サーバシステム全般に関する技術支援業務を長く勤める。UNIX・Windows等のプラットフォームやインターネットなどを中心とした技術支援業務を行なう中で、接点ともいうべきMicrosoftネットワークに関する造詣を深める。
現在は「日本Sambaユーザ会」スタッフなどを務め、オープンソース、Microsoft双方のコミュニティ活動に関わるとともに、各種雑誌への記事執筆や、講演などの活動を行なっている。


INDEX
第3回:Samba 3.0.20以降の新機能を追え(2)
  UNIX上のログファイルをイベントログ形式で参照する:Samba 3.0.21〜
UNIX上のログファイルをイベントログ形式で参照する(続き)
  WindowsのGUIからSambaユーザのユーザ名を変更する:Samba 3.0.21〜