*ユーザーが存在しない場合にのみ*システムにユーザーを追加する

*ユーザーが存在しない場合にのみ*システムにユーザーを追加する

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)。 。groupshadow

関連情報