praudit 命令可使 auditreduce 命令的二进制输出具有可读性。praudit 命令可从标准输入中读取二进制格式的审计记录,并以可显示的格式显示这些记录。输入既可以从 auditreduce 命令进行管道输出,也可以从单个审计文件进行管道输出。输入还可以使用 cat 命令生成以串联数个文件,或者针对当前审计文件使用 tail 命令生成。
praudit 命令可以生成四种输出格式。第五个选项,即 -l(长),可在每个输出行中列显一条审计记录。缺省设置为在每个输出行中放置一个审计标记。-d 选项可更改标记字段之间以及标记之间使用的分隔符。缺省分隔符为逗号。
缺省设置-不带选项的 praudit 命令在每行显示一个审计标记。此命令将按审计事件的说明显示审计事件,例如 ioctl(2) 系统调用。任何可以显示为文本的值均以文本格式显示。例如,用户将显示为用户名,而不是用户 ID。
–r 选项-原始选项将任何可以为数字的值显示为数字。例如,用户显示为用户 ID,Internet 地址以十六进制格式显示,模式以八进制格式显示。审计事件显示为其事件编号,例如 158。
–s 选项-短选项将通过审计事件的表名显示审计事件,例如 AUE_IOCTL。此选项显示其他标记的方式与缺省选项显示这些标记的方式相同。
–x 选项-XML 选项以 XML 格式显示审计记录。此选项可用于浏览器输入,或者可用于处理 XML 的脚本输入。
XML 通过审计服务提供的 DTD 进行说明。Solaris 软件还提供了样式表。DTD 和样式表位于 /usr/share/lib/xml 目录中。
在 praudit 命令的缺省输出格式中,可以轻松地将每条记录标识为一系列审计标记。每个标记都在单独的行中显示。每条记录都以 header 标记开始。例如,您可以使用 awk 命令进一步处理输出。
以下是 header 标记的 praudit -l 命令的输出:
header,173,2,settppriv(2),,example1,2003-10-13 13:46:02.174 -07:00 |
以下是同一 header 标记的 praudit -r 命令的输出:
121,173,2,289,0x0000,192.168.86.166,1066077962,174352445 |
您可能需要将 praudit 命令的输出作为多行文本处理。例如,您可能需要选择 auditreduce 命令无法选择的记录。您可以使用简单的 shell 脚本来处理 praudit 命令的输出。下面的简单示例脚本在每行中放置一条审计记录,搜索用户指定的字符串,然后将审计文件返回到其原始格式。
#!/bin/sh # ## This script takes an argument of a user-specified string. # The sed command prefixes the header tokens with Control-A # The first tr command puts the audit tokens for one record # onto one line while preserving the line breaks as Control-A # praudit | sed -e '1,2d' -e '$s/^file.*$//' -e 's/^header/^aheader/' \\ | tr '\\012\\001' '\\002\\012' \\ | grep "$1" \\ 查找用户指定的字符串 | tr '\\002' '\\012' 恢复原始的新换行符 |
请注意,脚本中的 ^a 为 Ctrl-A,而不是 ^ 和 a 这两个字符。前缀将 header 标记与可能显示为文本的字符串 header 区分开来。