bash shell автоматически создающий пользователя - adduser - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно автоматически создать пользователя, прочитав строки файла, который содержит имя пользователя, домашний каталог и полное имя.

Я новичок в написании сценариев оболочки Bash, и это меня очень смущает.

Что-то не так с моей командой adduser. Выдает ошибку - adduser: разрешено только одно или два имени.

следующий полный скрипт -

while read line;
do 
      fieldnumbers=$(echo $line | grep - o " " | wc - l)
      username=$(echo $line | cut -d' ' -f 1)
      home=$(echo $line | cut -d' ' -f 2)
      firstname=$(echo $line | cut -d' ' -f 3)

      if [[ "$fieldnumbers" -eq b4 ]]
      then
               middlename=""
      else
               middlename=$(echo $line | rev | cut -d' ' -f 2)

      lastname=$(echo $line | rev | cut -d' ' -f 1)
      password=$(echo pwgen 7 1) #create random password
      fullname="$firstname $middlename $lastname"

      echo "username is : $username"
      sudo adduser --gecos $fullname --disabled-password --home $home $username

      echo 'username:$password' | chpasswd
       echo "Password is for $username is: $password"
done < users.txt

Я уверен, что этот скрипт пронизан синтаксическими ошибками. Пожалуйста помоги. мой мозг жарен.

1 Ответ

0 голосов
/ 04 сентября 2018

Всегда заключайте в кавычки ваши переменные, если вы не хотите сознательно разделить значение на отдельные слова.

sudo adduser --gecos "$fullname" --disabled-password --home "$home" "$username"

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

Разница между одинарными и двойными кавычками в Bash

Итак, эта строка:

echo 'username:$password' | chpasswd

должно быть:

echo "username:$password" | chpasswd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...