LinuxシステムでUIDが1000を超えるすべてのローカルユーザーアカウントを削除するシェルスクリプトを作成する方法は?
これが私が今まで持っているものです:
#!/bin/bash
for userid in `/etc/passwd`
do
if ((“userid” >= 1000)); then
userdel -r $user
done
UIDが1000を超えるすべてのアカウントを削除する条件を設定する方法は?私が見つけられない部分ですね。これまで私がしたことが正しいかどうかはわかりませんが、同様の問題がありますが、少し違う投稿でこれについて読んでいます。
ベストアンサー1
次のawk
コマンドは、UIDが1000以上のすべてのローカルユーザーのユーザー名を印刷し、名前付きユーザーnobody
(最も可能性の高いユーザー)をスキップします。いいえ削除したい):
awk -F : '$3 >= 1000 && $1 != "nobody" { print $1 }' /etc/passwd
ファイルを区切られたフィールドを含む行ベースのレコード/etc/passwd
セットに解析します。:
3番目のフィールドの値が1000以上であることをテストし、最初のフィールドではないことを確認してから、最初のフィールドを印刷しますnobody
。 UIDが高い特別なアカウントにアクセスし$1 != "nobody"
ないように、2番目のテストを変更できます。$3 < 10000
その後、ループを使用して名前を読み取り、一度に1つずつ削除できます(参照スティーブンの答え以下を使用してこれを行う方法を学びますxargs
。
awk -F : '$3 >= 1000 && $1 != "nobody" { print $1 }' /etc/passwd |
while IFS= read -r name; do
userdel -r "$name"
done