Я запускаю useradd {user}
команду для добавления пользователей в свою систему, хотя планирую запустить ее в автоматизированной среде, и она может снова запуститься, даже если пользователь уже существует.
Есть ли способ, которым я могу запустить это, только если пользователь еще не существует? У пользователя нет домашней папки.
adduser
обычно предпочтительнее в системах Debian / Ubuntu.useradd
.Ответы:
id -u somename
возвращает ненулевой код завершения, когда пользователь не существует.Вы можете проверить это довольно просто ... (
&>/dev/null
просто подавляет нормальный вывод / предупреждение)источник
попробуй это:
или даже это:
источник
Если у вас есть только небольшое количество систем, вы задаете неправильный вопрос. Ответ вовсе не в том, чтобы запускать useradd, а в том, чтобы оставить эту работу для решения по управлению конфигурациями, такого как puppet или chef. Это позволит централизовать ваши определения пользователей и не позволит вам запускать циклы и использовать ssh с пользователями root для настройки ваших систем. У вас всегда будут системы в известном состоянии конфигурации.
Документация для кукол доступна на http://docs.puppetlabs.com
Как пример в марионетке:
источник
useradd не будет добавлять пользователя снова, если он уже существует, он намерен убедиться, что номер uid и логин uid уникальны. Если вы планируете запустить пакет, убедитесь, что используемые идентификаторы уникальны; useradd будет жаловаться на проблемные записи, и вам нужно перехватить ошибки / stderr, чтобы увидеть, какие учетные записи пользователей имели проблемы при входе в системы учетных записей (/ etc / passwd, group, shadow).
источник