Проблема с моим скриптом для добавления пользователей из текстового файла на centOS7 - PullRequest
0 голосов
/ 29 сентября 2019

Я настраиваю сервер и добавляю пользователей, и я сам учил, как добавить группу тестовых пользователей без паролей.Итак, у меня есть файл с именем и фамилией в username.txt, например:

james bond 
bobby dennis
alex newell
jon temple
joshua bridal
paul spears

Я пытаюсь запустить этот сценарий, и в строке 8 появляется неожиданная ошибка.

#!/bin/bash
while user in 'cat userlist.txt'
do
  USER_LIST="$(cut -d " " -f 1,2,3 userlist.txt --output delimiter='.')"
  echo "$USER_LIST" | while read user;
  do useradd "$user"
done

В результате я хотел бы получить имя пользователя :james.bond.Это тот формат, который я ищу.Если я смогу заставить это работать, я могу добавить генератор случайных чисел в конце.

Я очень слабый сценарист, поэтому большую часть этого материала я нашел в Интернете и пытаюсь собрать воедино.

Любая помощь будет отличной.

1 Ответ

0 голосов
/ 29 сентября 2019

Во-первых, давайте создадим образец для вашего userlist.txt, используя формат FIRSTNAME LASTNAME:

cat<<EOF > /tmp/userlist.txt
james bond
sherlock holmes
hercule poirot
name surname
another one
the sixth
seven dwarfs
finally eight
EOF

Теперь вы можете сделать более простой цикл, чем оригинал:

cat /tmp/userlist.txt | while read firstname lastname ; do 
   echo useradd -m "${firstname}.${lastname}" ; 
done

результат будет:

useradd -m james.bond
useradd -m sherlock.holmes
useradd -m hercule.poirot
useradd -m name.surname
useradd -m another.one
useradd -m the.sixth
useradd -m seven.dwarfs
useradd -m finally.eight

когда вы обнаружите, что вы удовлетворены результатом, просто удалите echo, используемый для отладки:

#!/bin/bash
cat /tmp/userlist.txt | while read firstname lastname ; do 
  useradd -m "${firstname}.${lastname}" ; 
done

the read встроенная команда ожидает строки, разделенные пробелами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...