短い背景: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ツールです。
私はこの場所を「偶然に」約1週間前に見つけました、そして私は本当にそれが大好きです!たくさんの知識、スキル、そして親しみやすさを1か所で見るのは素晴らしいことです。これが私の最初の質問なので、何か返事が来るかどうか本当に楽しみです!:-) どうもありがとう!