/etc/passwdファイルを照会して200未満のすべてのユーザーUIDSを表示し、そのユーザーが/etc/ftpusersと同じファイルにあることを確認することは可能ですか?
これまでに、200未満のUIDを持つすべてのユーザーをリストするために次のコマンドを正常に作成しましたが、リストされたユーザーが/ etc / ftpusersファイルにあるかどうかを確認する方法がわかりません。
grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}'
ファイルにユーザーがいない場合は、違いを出力する必要があります。 forステートメントを試してみましたが、正しく動作しません。
ベストアンサー1
aix diff
同じオプションがあるかどうかはわかりませんが、実行時にGNU diff
このオプション(デフォルトシェル)を使用すると機能します。linux
ksh
aix
diff -I "^#" --new-line-format="" --unchanged-line-format="" <(awk -F: '$3 < 200 {print $1}' /etc/passwd) /etc/ftpusers
diff
コマンドが異なる場合は、ループを試してください。
for u in $(awk -F":" '$3 < 200 {print $1}' /etc/passwd); do
count=$(grep -scx "$u" /etc/ftpusers)
[ "$count" -gt 0 ] || echo "$u"
done
私はそれをテストし、ksh
動作します。
grep
また、エラーメッセージの計算と抑制をサポートする分散ペンテコステで利用可能なオプションも確認しました。grep
aix
-c
-s