文件监视模块只能监视那些格式为每行有一个记录的文件。如果检测到被监视的文件发生了更改,该模块就会生成事件并将其显示在一个表中。该模块提供的默认功能可以处理一些常见的文件,例如 passwd、vfstab 等。
您可以添加、删除或编辑此缺省列表中的项。要添加一个新文件,您必须定义被监视文件的记录格式。您必须指定在以下情况下生成的与文件相关的警报的严重程度:
添加记录事件
删除记录事件
修改记录事件
仅使用文件监视模块监视那些不希望被频繁更改的系统文件,例如 passwd 文件,从而确保能够尽可能发挥更改通知的作用。
文件监视表
文件更改表
如果要监视的文件(例如目录)存在但无法打开,则该文件将被添加到文件监视表中,但不会显示与此文件相关的其他信息。而是生成信息警报。
在每个表标题的右侧,文件监视模块将列出关联的警报数目。文件监视表用于监视文件是否存在,而更改表用于监视对现有文件所作的更改。
当文件的时间戳改变时,文件监视模块使用验证脚本来验证该文件。您可以使用模块中包含的 fileparse 二进制文件,也可以创建自己的验证脚本。
此模块还可以对特定的文件启用或禁用事件监视模式,这与在文件扫描模块中启用或禁用模式匹配搜索的概念类似。例如,如果您禁用了 /etc/passwd 文件,则向该文件中添加新项之后,底部表中不会出现相应的事件检测消息。直到再次启用 /etc/passwd 监视状态后,才会出现该新增项。
文件监视表列出了该模块所监视的所有文件。一些较为常用的属性显示在此表的顶层,而其它隐藏属性则显示在较低的层。有关隐藏属性的更多信息,请参阅隐藏的文件属性。
只有当文件被检测为存在后,才能监视其更改。如果某个文件不存在或者其属性显示为不存在,但模块检测到该文件确实存在,并且其大小大于 0。例如,对于一个具有两条记录的文件,该模块无法监视这两条记录。但是可以监视以后对该文件进行的所有更改。
此表用以下七个系统文件进行初始化:
/etc/hosts /etc/aliases /etc/nsswitch.conf /etc/inittab /etc/vfstab /etc/passwd /etc/rmtab
文件监视表显示每个文件的信息并提供与各个属性有关的数据,如下表所列。
表 3–1 文件监视表
字段 |
说明 |
---|---|
文件 |
文件的名称。 |
完整路径 |
文件的路径及其真实名称。 |
文件大小 |
文件大小,以字节计。 |
文件拥有者 |
文件的拥有者。 |
文件组 |
文件所属的组。 |
文件权限 |
对文件所具有的权限。 |
文件时间戳 |
上次更新文件的时间。 |
验证脚本 |
当文件的时间戳改变时,用于验证该文件的验证脚本的路径。将脚本保存在 /var/opt/SUNWsymon/ SysMgmtPack /filewch/scripts 中并提供相对路径。脚本的值是可选的。有关更多信息,请参见验证脚本。 |
退出代码 |
显示验证脚本上次执行时的退出代码。 |
事件监视 |
显示每个文件的文件监视模式的状态。有关更多信息,请参见禁用事件监视。 |
下表列出了隐藏的文件属性,您可以从“行编辑器”窗口访问这些属性。要打开此窗口,请在任意行上单击鼠标按钮 3,并从弹出菜单中选择“编辑行”。
表 3–2 隐藏的文件属性
字段 |
说明 |
---|---|
分隔符 |
列之间的分隔符。 |
注释字符 |
分隔注释行的字符类型。 |
字段数目 |
每个文件项中的字段数目。 |
数字键字段 |
组合成键的字段数目。假定键位于记录的开始处。键是记录的标识符。例如,在 passwd 文件中,第一个字段“用户名”是每个记录的键。每个记录的键是唯一的。 |
字段名 |
文件项中不同列的名称。 |
隐藏值标志 |
可以是以下值之一:
|
添加严重程度 |
可能值:信息、警告、错误、无。 |
删除严重程度 |
可能值:信息、警告、错误、无。 |
更改严重程度 |
可能值:信息、警告、错误、无。 |
记录格式 |
记录的格式。有关更多信息,请参阅记录格式。 |
您可以使用属性编辑器,对退出代码的正则表达式设置警报阈值。没有缺省的警报阈值。
如果要监视的文件不存在,文件监视模块将生成一个信息警报,但仍会把文件添加到文件监视表中,只是不显示与此文件相关的任何信息。
如果要监视的文件(例如某个目录)存在但无法打开,则该文件将被添加到文件监视表中,但不会显示与此文件相关的其他信息。
文件更改表监视文件并显示其记录的添加、删除或修改状况。
表 3–3 文件更改表
当文件监视模块检测到一个新的事件时,将显示该事件并生成相应的警报。“文件名”单元格的颜色会更改为与您将此文件添加到文件监视表时指定的事件值对应的颜色。事件选项为信息、警告、错误和无。
当您将新文件添加到模块监视的文件列表中时,必须提供 record format 属性的值,定义被监视文件的格式。如果将 fileparse 二进制文件指定为唯一需要的验证脚本,则必须指定此值。fileparse 二进制文件对文件执行的验证时会检查记录的格式。record format 是文件监视文件表中 file 项的隐藏属性。定义后您无法看到此属性,除非您选择编辑该文件的项。有关更多信息,请参见验证脚本。
下表列出了 record_format 支持的数据类型:
datatype = {STRING, INT, IPADDRESS, ZERO_STRING, RANGE_INT, CHOICE_INT, CHOICE_STRING CONST}
其中
该字符串不能为空
该字符串可以为空或不为空
该整数必须与指定字符串之一相匹配
该整数必须与指定整数之一相匹配
该字符串必须与指定字符串之一相匹配
该字段值必须匹配
其语法还支持以下值:
字符串选项列表中不允许使用字符 “|”。如果这些字符串在监视文件中包含在双引号中,则它们必须嵌入在双引号中。INT 值只能是正值,不支持负值。
常量字符串声明时可以包含在双引号中,如下所示:
"+" | "-" | STRING STRING
可用的操作符如下:
operator = | , [], *
其中
表示“或”。例如,- line-format = "+" | "-" | STRING STRING
表示可选。例如,- line-format = STRING [STRING|IPADDRESS]
表示某种数据类型不重复或多次重复。例如:- line-format= IPADDRESS STRING STRING*
下例显示了用于验证 /etc/passwd 的记录格式:
STRING STRING INT INT ZERO_STRING STRING ZERO_STRING | "+" | "-"
操作符的优先级如下:
[] , | , *
在模块刷新的过程中,如果模块检测到文件的时间戳已改变,就会执行关联的验证脚本。“退出代码”字段将显示上次执行时的退出代码。当脚本字段被赋予新值时,模块将检查给定的路径是否是有效的文件。如果路径无效,“退出代码”字段将显示 NO_SUCH_SCRIPT。如果运行的验证脚本被终止,该字段还会显示 killed。在这种情况下,请指定要在其上生成退出代码警报的正则表达式。
您可以将自己的验证脚本放在 /var/opt/SUNWsymon/SysMgmtPack/filewch/scripts 目录中,或者使用模块安装的 fileparse 二进制文件。
如果指定了 fileparse,该模块将忽略提供的参数。参数从文件已知的分隔符、注释和记录格式值中生成。如果您指定了某个值,所有的参数都将被模块中内置的参数替换。这样就确保了不会指定不受支持的注释和分隔符。
例如,如果您指定了 mytest.sh -a myarg,将会执行 mytest.sh 脚本,其参数为 -a myarg。
fileparse 是一个 C 二进制文件,位于 /var/opt/SUNWsymon/SysMgmtPack/filewch/scripts/ 中。
缺省的脚本文件列表中为“验证脚本”和“记录格式”设置了值。例如,对于 /etc/hosts,这些值设置如下:
“验证脚本”被设置为 fileparse
“记录格式”被设置为 IPADDRESS STRING STRING
该二进制文件根据文件监视表包含的 file 定义中指定的 record_format 来分析 filename。如果文件内容与输入文件 record_format 不一致,将报告错误。空白行和注释行将被跳过。该二进制文件返回以下值:
成功
无法打开文件
record_format 错误
文件格式错误
程序错误,例如内存不足
参数错误