ОБНОВИТЬ
Я не уверен, нужно ли вам добавлять одинаковых пользователей на каждый сервер или у каждого сервера есть свой пользователь. Я дам вам решение для любой ситуации.
Добавление списка пользователей на каждый сервер
Лучший инструмент для этой работы - newusers
. Вам нужно будет создать текстовый файл, содержащий список пользователей и их данные. Если вы хотите добавить одного и того же пользователя на каждый сервер, этому файлу потребуется только одна строка.
Создать список пользователей. Общий формат файла
username:passwd:UID:GID:full name,room number,work phone,home phone,other:directory:shell
Итак, в вашем случае вам нужно будет использовать что-то вроде
tom:password1:::"Tom Hanks","101","123456","654321","Tall"::
danny:password2:::"Danny DeVito","102","222333","333222","Short"::
Обратите внимание, что я оставил параметры UID, GUID, каталога и оболочки пустыми. Это означает, что будут использоваться значения по умолчанию.
Теперь, когда вы создали список, вам нужно будет скопировать его на каждый удаленный компьютер, а затем добавить новых пользователей. Для этого вам все равно потребуется список соответствующих имен хостов или IP-адресов, по одному на строку, как в моем предыдущем предложении. Как только вы все это настроите, сохраните этот маленький скрипт как newusers.sh
:
#!/bin/bash
while read ip; do
scp users.txt root@$ip:/home/root
ssh root@$ip newusers users.txt
done
Сделайте скрипт исполняемым (chmod a+x newusers.sh
) и запустите его для каждого IP в вашем файле:
newusers.sh < IPs.txt
Это будет намного проще, если вы настроите ssh без пароля. Если вы этого не сделаете, выполните следующие команды, чтобы использовать ssh-ключи, обеспечивающие доступ без пароля (вам все равно потребуется фраза-пароль):
ssh-keygen -t rsa
while read ip; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$ip; done < IPs.txt
Добавление разных пользователей на каждый сервер
В этом случае я бы создал немного другой файл. Он должен иметь IP-адрес или имя хоста, его соответствующего пользователя и данные, необходимые для ее создания в каждой строке. Предполагая, что вы хотите установить пароли, вы можете использовать текстовый пароль (очевидно, некоторые проблемы безопасности здесь, не знаю, актуальны ли они в вашем случае) в качестве четвертого поля. Кроме того, чтобы правильно анализировать имена с пробелами, убедитесь, что в качестве разделителя полей используется не пробельный символ. В приведенном ниже примере я использую -
:
192.168.1.10-tom-"Tom Hanks","101","123456","654321","Tall"-pass1
192.168.1.10-danny-"Danny DeVito","102","222333","333222","Short"-pass2
Теперь переберите файл и создайте каждого пользователя на соответствующем компьютере. Обязательно установите переменную IFS
в ваш разделитель полей для правильного разбора пробелов:
while IFS='-' read ip name opts pass; do \
ssh root@$ip useradd $name -mc $opts -p `openssl passwd $pass` -s /bin/bash \
done < list.txt