*사용자가 존재하지 않는 경우에만* 시스템에 사용자 추가

*사용자가 존재하지 않는 경우에만* 시스템에 사용자 추가

useradd {user}자동화된 환경에서 실행할 계획이지만 사용자가 이미 존재하더라도 다시 실행될 수 있지만 시스템에 사용자를 추가하는 명령을 실행해 왔습니다 .

사용자가 아직 존재하지 않는 경우에만 이것을 실행할 수 있는 방법이 있습니까? 사용자에게 홈 폴더가 없습니다.

답변1

id -u somename사용자가 존재하지 않으면 0이 아닌 종료 코드를 반환합니다.

매우 간단하게 테스트할 수 있습니다... ( &>/dev/null정상 출력/경고를 억제하기만 하면 됩니다)

id -u somename &>/dev/null || useradd somename 

답변2

이 시도:

useradd {user} || echo "User already exists."

아니면 이것도:

useradd {user} || true

답변3

시스템의 작은 하위 집합만 갖고 있지 않다면 잘못된 질문을 하고 있는 것입니다. 대답은 useradd를 전혀 실행하지 않고 이 작업을 puppet이나 Chef와 같은 구성 관리 솔루션에 맡기는 것입니다. 이렇게 하면 사용자 정의를 중앙 집중화할 수 있으며 for 루프를 실행하고 루트 사용자와 함께 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). .

관련 정보