시스템에 사용자 추가 *없는 경우에만 * 사용자가 이미 존재하더라도

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

사용자가 아직없는 경우에만이를 실행할 수있는 방법이 있습니까? 사용자에게 홈 폴더가 없습니다.



답변

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

당신은 그것을 간단하게 테스트 할 수 있습니다 … ( &>/dev/null정상적인 출력 / 경고를 억제합니다)

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

답변

이 시도:

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

또는 이것조차도 :

useradd {user} || true

답변

소수의 시스템 만 가지고 있지 않으면 잘못된 질문을합니다. 대답은 useradd를 전혀 실행하는 것이 아니라 꼭두각시 나 요리사와 같은 구성 관리 솔루션에 맡기는 것입니다. 이를 통해 사용자 정의를 중앙 집중화하고 시스템을 구성하기 위해 for 루프를 실행하고 루트 사용자와 ssh를 사용하지 못하게 할 수 있습니다. 항상 알려진 구성 상태의 시스템이 있습니다.

꼭두각시 문서는 http://docs.puppetlabs.com 에서 수 있습니다.

꼭두각시의 예 :

user { "bob" :
  password   => "$1$yv3n066X$Vpb05Ac/fHTicNdT9T5vz1", # generated with `openssl passwd -1`
  ensure     => present,                              # ensure => absent to remove
  managehome => true,
}

답변

useradd는 이미 존재하는 경우 사용자를 다시 추가하지 않으며, uid 번호와 uid 로그인이 고유한지 확인하려고합니다. 배치를 통해 실행하려는 경우 사용중인 uid가 고유한지 확인하십시오. useradd는 문제가있는 항목에 대해 불만을 표시하므로 오류 / stderr를 캡처하여 계정 시스템 (/ etc / passwd, group, shadow)에 어떤 사용자 계정에 문제가 있는지 확인해야합니다.