databasectl - バウンス記録のデータベース操作
databasectlコマンドは、bounceHammerデータベースのバウンス記録テーブル(BounceLogs)の更新などを行うコマンドです。mailboxparserやloggerが作ったログファイルをデータベースに記録または新しい値で更新します。
このコマンドはインストールしたディレクトリ/bin/databasectlにあります。
使用例
databasectlは、tablectlと同様、bounceHammerのデータベース/マスターテーブルに対してSQL文を発行せずともある程度の操作が出来るようになっています。また、databasectlコマンドよりも範囲は限定されていますが、管理画面(WebUI)でも一部の操作が可能です。
databasectlコマンドは毎時・毎日のバッチ処理で解析したデータをデータベースに登録する用途で使用されます。
今日のログファイルの内容をデータベースに登録・更新
# databasectl --update --today ⏎
昨日のログファイルの内容をデータベースに登録・更新
# databasectl -Uy ⏎
指定したログファイルの内容を強制的にデータベースに登録・更新
# databasectl --force -U /tmp/log.dat ⏎
標準入力から入ってきたデータをデータベースに登録・更新
# cat 2009-12-31.log | databasectl --update ⏎
解析結果をログに保存しつつ直ちにデータベースに登録
# mailboxparser -2 /var/mail/user1 | databasectl --update ⏎
ヘルプを表示
# databasectl --help ⏎
# databasectl --update --today ⏎
昨日のログファイルの内容をデータベースに登録・更新
# databasectl -Uy ⏎
指定したログファイルの内容を強制的にデータベースに登録・更新
# databasectl --force -U /tmp/log.dat ⏎
標準入力から入ってきたデータをデータベースに登録・更新
# cat 2009-12-31.log | databasectl --update ⏎
解析結果をログに保存しつつ直ちにデータベースに登録
# mailboxparser -2 /var/mail/user1 | databasectl --update ⏎
ヘルプを表示
# databasectl --help ⏎
利用可能なオプション
データベース制御用オプション
- -U, --update
- databasectlコマンドの引数に指定したファイルの内容でデータベースを更新します。
- --force
- databasectlは指定されたログファイルの内容をデータベースに書き込みます。書き込もうとするデータの発信者アドレス(addresser)と受信者アドレス(recipient)の組み合わせがデータベースに既に存在した場合、日付を照合して新しければログファイルの内容でデータベースの内容を上書きします。
ただし、データベースにある更新対象となるデータの差戻理由がwhitelistである場合は、ログファイルの内容がデータベースの内容よりも新しくてもdatabasectlは上書きしません。
この--forceオプションを指定すると、データベースの更新すべきデータの差戻理由がwhitelistであっても、強制的にログファイルの新しい内容で上書きをします。 - --remove (ver.2.4.0以降)
- 後述の--id, --tokenオプションで指定する識別子に一致するデータをデータベースから削除します。このオプションを使うには、--id, --tokenのいずれかの引数に削除対象のデータを指定する必要があります。
- --disable (ver.2.4.0以降)
- 後述の--id, --tokenオプションで指定する識別子に一致するデータのdisabledカラムの値を1にします。データベース上で無効フラグを立てるこのオプションを使うには、--id, --tokenのいずれかの引数に対象となるデータを指定する必要があります。
- --id 識別子(ID) (ver.2.4.0以降)
- 前述の--remove, --disableオプションが実行する対象データを指定します。このオプションは識別子としてデータベース上のIDを引数として要求します。
- --token 識別子(トークン) (ver.2.4.0以降)
- 前述の--remove, --disableオプションが実行する対象データを指定します。このオプションは識別子としてデータベース上にある記録のメッセージトークンを引数として要求します。
更新用オプション
- -b, --before 日数
- databasectlは、-U(--update)オプションのみで起動された場合、設定ファイル(etc/bouncehammer.cf)のdirectory->logディレクトリで定義したディレクトリの中から、実行した日のログファイル(2009/12/31に実行したらhammer.2009-12-31.logというファイル)の内容をデータベースに書き込みます。
ログが集積されているディレクトリにあるログファイルのうち、今日以外のログファイルをデータベースに書き込みたい場合はこの--beforeオプションで遡る日数を指定します。--before 2 で一昨日、--before 10 で10日前のログファイルをデータベースに書き込みます。--before 1は後述の--yesterdayと等価です。 - -y, --yesterday
- 設定ファイル(etc/bouncehammer.cf)のdirectory->logで定義される集積用ディレクトリにある、昨日(databasectl実行日からみて)のログファイルをデータベースに書き込みます。主にバッチ処理で昨日のファイルを書き込むのに有用(特に月をまたぐ場合)です。 このオプションは--before 1と等価です。
- -t, --today
- 設定ファイル(etc/bouncehammer.cf)のdirectory->logで定義される集積用ディレクトリにある、今日(databasectl実行日)のログファイルをデータベースに書き込みます。
このオプションは省略してもかまいません。databasectlが今日のログファイルを書き込むという事を明示するぐらいの役割です。Version 2.7.0から、-t,-y,-bのいずれかまたは引数に処理すべきファイルのPATHを指定する必要があります。--before 0と等価です。 - -d, --date 日付文字列 (ver.2.5.0以降)
- 処理対象のバウンス記録ファイルを日付の形式で指定可能です。-t(--today), -y(--yesterday)以外の過去で、-b(--bofore)を使用した何日前という計算しにくい日付を指定する場合に有用です。有効な日付フォーマットは 2009/04/29 または 2009-04-29 です。
その他のオプション
- -B, --batch (ver.2.3.1以降)
- バッチモードで起動します。コマンド実行結果の概要をYAML形式で出力します。パイプでメールにして送信したりするときに便利でしょう。
- -C, --conf 設定ファイル
- 読み込む設定ファイルを指定します。このオプションを使用しない場合、インストール先/etc/bouncehammer.cfが使用されます。複数の設定ファイルを処理毎に使い分ける場合などでは有用でしょう。
- -T, --test
- テストモードで動作します。通常は動作に必要な設定値をインストール先/etc/bouncehammer.cfから読出しますが、このオプションを指定するとbouncehammer.cfが無くても動作します。-C test-run.cf と等価です。
- --silent (ver.2.1.0以降)
- このオプションを付けると、次の-v, --verboseオプションの有無にかかわらず冗長なメッセージおよびエラーの出力がなくなります。また、コマンドをsendmail等のデーモンが実行した場合、エラーが起きてもexit(0)=成功で終了します。--silentオプションを付けずにsendmail等MTAがコマンドを起動し、エラーが発生した場合はexit(75)=EX_TEMPFAILで終了します。
- -v, --verbose
- 処理過程が冗長に表示されます。
- --help
- コマンドのヘルプが表示されます。
- --version
- バージョン番号が表示されます。
コマンド実行結果のスクリーンショットでの説明
No TrackBacks
TrackBack URL: http://bouncehammer.jp/cgi-bin/mt/mt-tb.cgi/34


Leave a comment