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)에 어떤 사용자 계정에 문제가 있는지 확인해야합니다.