praudit コマンドは、標準入力からバイナリ形式の監査レコードを読み込み、そのレコードを表示可能な書式で表示します。auditreduce コマンドまたは 1 つの監査ファイルからの出力は、praudit コマンドの入力にパイプできます。catコマンドを使用すると、複数のファイルを連結して入力にパイプすることができます。tail コマンドを使用すると、現在の監査ファイルを入力にパイプできます。
praudit コマンドでは、次の 4 つの出力形式を生成できます。
デフォルト– デフォルトでは、1 行に 1 つの監査トークンが表示されます。デフォルトでは、監査イベントは ioctl(2) などのその内容が表示され、テキストで表示できる値はすべてテキスト形式で表示されます。たとえば、ユーザーは、ユーザー ID ではなく、ユーザー名で表示されます。
-l オプション – このオプションでは、1 行に 1 つの監査レコードが表示されます。-d オプションを指定すると、トークンフィールドおよびトークン間で使用される区切り文字を変更できます。デフォルトの区切り文字は、コンマです。
-r オプション – このオプションでは、数値で表現できる値はすべて数値として表示されます。たとえば、ユーザーはユーザー ID で、インターネットアドレスは 16 進形式で、モードは 8 進形式で表示されます。監査イベントは、イベント番号 (158 など) で表示されます。
-s オプション – このオプションでは、監査イベントがテーブル名 ( AUE_IOCTL など) で表示されます。その他のトークンは、デフォルトと同じ形式で表示されます。
praudit のデフォルトの出力形式では、各レコードは監査トークンのシーケンスとして表示されます。各トークンは 1 行ごとに出力されます。すべての監査レコードは header トークンで始まります。awk コマンドなどを使用すると、出力をさらに処理できます。
次の出力は、 headerトークンを praudit コマンドのデフォルトで出力したものです。
header,240,1,ioctl(2),es,Tue Sept 7 16:11:44 1999, + 270 msec |
次の出力は、同じ header トークンを praudit -r コマンドで出力したものです。
20,240,1,158,0003,699754304, + 270 msec |
praudit コマンドの出力は、必要に応じてテキストとして操作できます。たとえば、auditreduce コマンドでは選択できないレコードを選択したいことがあります。単純なシェルスクリプトを使用すると、praudit の出力を処理できます。次の単純なスクリプトの例では、header トークンに Control-A の接頭辞を付け、1 つのレコードのすべての監査トークンを 1 行に結合します。このとき、改行は Control-A として保持されます。次に、grep コマンドを実行して、元の改行を復元します。
#!/bin/sh praudit | sed -e '1,2d' -e '$s/^file.*$//' -e 's/^header/^aheader/' \\ | tr '\\012\\001' '\\002\\012' \\ | grep "$1" \\ | tr '\\002' '\\012' |
スクリプトの ^a は、^ と a という 2 つの文字ではなく、Control-A です。この接頭辞によって、ヘッダートークンが、テキストとして表示される header 文字列と区別されます。