Рейтинг:0

команда groupadd не работает, ошибка: «недопустимое имя группы»

флаг il

Я переделал код на что-то менее сложное, и теперь он говорит:

ubuntu@ubuntu-VirtualBox:~$ ./newuseradd.sh Newbies.csv [sudo] пароль для ubuntu: useradd: группа «acct» не существует useradd: группа 'hr' не существует useradd: группа "покупка" не существует

Скрипт:

 #!/бин/баш

 если [ $# -ne 1 ]; тогда
   echo "ИСПОЛЬЗОВАНИЕ: ФАЙЛ $0"
    выход 7
 фи

 sed -i'.bak' 's/Accounting/acct/;s/Purchasing/purch/;s/Human Resources/hr/;s/Information Technology/it/' $1 # Часть 3 - преобразование имен групп


 при чтении строки; делать
    userinfo=($(echo $line | tr ',' ' '))
    firstinitial=$(echo "${userinfo[1]}" | cut -c1)
    имя_пользователя=$(echo ${firstinitial}${userinfo[0]} | tr A-Z a-z)
    echo useradd $username -g ${userinfo[2]} -G сотрудник -c ${userinfo[3]} -m #Часть 2
    echo "$(date): $username, ${userinfo[1]}, ${userinfo[0]}, $?" >> it-log.txt # Часть 4 задание - it log

    echo -n "${userinfo[0]}, ${userinfo[1]}" >> hr-log.txt
    grep "$username" /etc/passwd | вырезать -d':' -f1,7,3 | tr ':' ',' >> hr-log.txt
выполнено < $1 # часть 1 задание

Задание с деталями

Soren A avatar
флаг mx
Я думаю, что `groupadd` принимает только один аргумент имени группы за раз.
AnneBright avatar
флаг il
Спасибо, а есть ли для меня более простой способ сделать это? Я смотрел много видео и кое-что читал в Интернете, и поэтому мой сценарий может показаться немного франкштейновским...
bac0n avatar
флаг cn
@Steeldriver без кавычек `${a[*]}` не будет расширяться до разделенных запятыми (neighter будет `${a[@]}` в любой форме), но `"${a[*]}"` будет, поэтому он будет зацикливаться: `IFS=,; а=(а б в); эхо ${a[*]} "${a[*]}"`
флаг hr
@AnneBright Хорошо, видимо, я ошибаюсь - пожалуйста, игнорируйте мой предыдущий комментарий
bac0n avatar
флаг cn
@AnneBrigh: @Steeldriver по-прежнему прав, потому что вы изменили IFS на `,`, `${groups[*]}` не будут разделены, как ожидалось (`" \n\t"`), думаю, вы можете прокомментировать `IFS ` поскольку он не используется, я полагаю. (secgroup= назначается как переменная, но адресуется как массив)
bac0n avatar
флаг cn
есть много других проблем, вам, вероятно, следует повторить различные «$variables», чтобы убедиться, что синтаксический анализ работает.
Рейтинг:1
флаг cn

В этом случае я думаю, что лучше сериализовать ваши данные в списке шагов (из 4).

#!/бин/баш

объявить группу паролей -A
объявить -la a=()
в то время как IFS="," читать -r b c d e; делать
    a+=("$b" "$c" "$d" "$e"); а=("${а[@]// }")
сделано < newbies.csv

для i в группе паролей; делать
    в то время как IFS=: читать -r j _ ; делать
        оценка ${i}\[\$j\]=1; сделано < /etc/$i
сделано

искать(){
    местный
    а=${1}[$2]; [[ ${!a} = 1 ]]
}

for ((y = 0, x = 0; y < ${#a[@]}; y += 4)); делать
    читать -р \
        фамилия имя отдел uid \
    <<< "${a[@]:$y:4}"
    printf Обработка:\ %s\n \
    "$lastname $firstname $department $uid"

    группа поиска \
    "$отдел" || echo groupadd "$отдел"

    пароль поиска \
    "$имя" || { \
    echo useradd -n -c "Assigment4" -g "$department" "$firstname" && ((x++)); }
сделано
echo "Завершено. Создано $x учетных записей."

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.