/etc/passwd ファイルを照会して、200 未満のすべてのユーザー UID を表示し、それらのユーザーが /etc/ftpusers などのファイル内に存在するかどうかを確認することは可能ですか?
これまでのところ、UID が 200 未満のすべてのユーザーをリストする以下のコマンドを作成することはできましたが、リストされたユーザーが /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
、動作しました。
また、配布された whitgrep
で利用可能なオプションも確認しましたが、カウントとエラー メッセージの抑制の両方がサポートされています。grep
aix
-c
-s