Короткий фон: мне нужно контролировать разрешения для файла unix (каталога) с помощью ZABBIX, чтобы увидеть, изменились ли они/когда они меняются. Для этого у ZABBIX нет встроенного, например vfs.file.mode [xxxx], поэтому мне пришлось свернуть собственный UserParameter с числовым типом.Ищете более эффективный (и переносимый) способ получения (числовых) прав доступа к файлам в unix
Что я до сих пор, является использование ls -l | cut -c 2-10
, чтобы получить rwxr-xr-x
часть, а затем использовать sed
для преобразования букв в их «вес», и awk
с substr
, чтобы подвести итог, чтобы получить цифровую 755
или любое значение.
Это в настоящее время на Solaris, у меня нет команды GNU coreutils stat
, и я хочу, чтобы она была портативной и эффективной, и только с использованием стандартных инструментов unix, которые всегда доступны. (IMHO, 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, о котором я не думал.
Я нашел это место «случайно» около недели назад, и мне действительно очень нравится! Удивительно видеть, что много знаний, навыков и дружелюбия в одном месте! Это мой первый вопрос, поэтому я очень рад видеть, есть ли у меня ответ! :-) Спасибо большое!
То, что вы ищете, легко доступно с помощью системных вызовов. Нет необходимости изобретать велосипед, кроме «забавы». – Ether
Дело в том, что написание собственной 'stat (2)' wrapper фактически _is_ изобретает колесо. Мне нужно что-то, что я могу добавить в конфигурационный файл, не требуя установки дополнительных программ на контролируемые хосты. – MattBianco