useradd {user}
自動化された環境で実行する予定ですが、ユーザーがすでに存在していても再実行できますが、システムにユーザーを追加するコマンドを実行してきました。
ユーザーがまだ存在しない場合にのみこれを実行する方法はありますか?ユーザーにホームフォルダがありません。
答え1
id -u somename
ユーザーが存在しない場合は、ゼロ以外の終了コードを返します。
非常に簡単にテストできます...(&>/dev/null
通常の出力/警告を抑制するだけです)
id -u somename &>/dev/null || useradd somename
答え2
この試み:
useradd {user} || echo "User already exists."
またはこれも:
useradd {user} || true
答え3
システムの小さなサブセットしか持っていない場合は、間違った質問をしています。答えは、useraddをまったく実行せずに、このタスクをpuppetやChefなどの構成管理ソリューションに任せることです。これにより、カスタマイズを一元化でき、forループを実行し、rootユーザーと一緒にsshを使用してシステムを構成することを防ぎます。システムは常に既知の構成状態のままです。
人形関連文書は次の場所にあります。http://docs.puppetlabs.com
Puppetで次の例を見てください。
user { "bob" :
password => "$1$yv3n066X$Vpb05Ac/fHTicNdT9T5vz1", # generated with `openssl passwd -1`
ensure => present, # ensure => absent to remove
managehome => true,
}
答え4
useradd
ユーザーがすでに存在する場合、ユーザーは再度追加されません。これは、uid番号とuidログイン名が一意であることを確認することです。バッチを実行する場合は、使用されているuidが一意であることを確認してください。useradd
問題のある項目について苦情が発生し、どのユーザーアカウントがアカウントシステムに入るのに問題があるかを確認するには、エラー/ stderrをキャプチャする必要があります(、、、/etc/passwd
)。 。group
shadow