ОНОВЛЕННЯ
Я не впевнений, що вам потрібно додати одних і тих же користувачів до кожного сервера чи кожен сервер має свого користувача. Я дам вам рішення для будь-якої ситуації.
Додавання списку користувачів до кожного сервера
Найкращий інструмент для цієї роботи 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