System File Size Changes
In this example, we report unusual system file size changes.
The SystemFileSizeChange script might send an alert message like the following:
PIKT ALERT Fri Oct 12 10:26:26 2001 antwerp URGENT: SystemFileSizeChange Report unusual system file size changes the size of /etc/passwd has changed drastically, was 2321 bytes, is now 1146 bytes
SystemFileSizeChange makes reference to the =files_system_obj macro, which resolves to the name of the FilesSystem.obj file. The script follows.
SystemFileSizeChange init status =piktstatus level =piktlevel task "Report unusual system file size changes" input proc "=cat =files_system_obj | =awk '{print $1}'" dat $name 1 keys $name begin set #pctdiff = 10% // the percentage difference beyond // which we signal a potential problem rule if -e $name set #size = #filesize($name) else output mail "$name not found!" set #size = 0 next endif rule // bypass size check for these files if $name =~ "/etc/mnttab|=alerts|=piktd_lok|=piktc_svc_lok" next endif rule if =deviated(size, #pctdiff) if %size == 0 output mail "$name was non-existent or 0 bytes (or is a new addition to the files list), is now $text(#size) bytes" else if #defined(%size) output mail "the size of $name has changed drastically, was $text(%size) bytes, is now $text(#size) bytes" endif endif endif end // %size reference for new file additions next time set #size = 0
This is just one program example. You could add rules, or write new scripts, for example to: report system files that you don't want (such as startup files), report changes in modification times or link counts, report outdated files that should be updating regularly, report and possibly also rm core files, etc.
For more examples, see Samples.