简短背景:我需要使用 ZABBIX 监视 unix 文件(目录)的权限,以查看它们是否/何时更改。ZABBIX 没有像 vfs.file.mode[xxxx] 这样的内置函数,所以我必须使用数字类型滚动我自己的 UserParameter。
到目前为止,我所做的是ls -l | cut -c 2-10
用来获取rwxr-xr-x
零件,然后sed
用来将字母转换为它们的“重量”,并awk
总结substr
起来,得到数字755
或任何值。
这目前在 Solaris 上,我没有 GNU coreutilsstat
命令,我希望它是可移植的和高效的,并且只使用始终可用的标准 unix 工具。(恕我直言,perl 并不总是可用)。
我的第一次尝试(根目录的示例):
ls -ld / | \
cut -c 2-10 | \
sed -e 's%-%0%g' -e 's%r%4%g' -e 's%w%2%g' -e 's%x%1%g' | \
awk '{print (100 * ((substr($0,1,1)) + (substr($0,2,1)) + (substr($0,3,1))) + \
(10 * ((substr($0,4,1) + (substr($0,5,1)) + (substr($0,6,1)) ))) + \
( (substr($0,7,1)) + (substr($0,8,1)) + (substr($0,9,1)) ) );}'
如您所见,我不关心 setuid 位或文件以外的任何内容,但始终欢迎纯粹的回应!
当然必须有一个更优雅的解决方案。也许是我没有想到的标准 unix 工具。
大约一周前,我“偶然”发现了这个地方,我真的很喜欢它!在一个地方看到这么多知识、技能和友善,真是太棒了!这是我的第一个问题,所以我很高兴看到我是否得到任何回应!:-) 非常感谢!