Primeiro você deve remover o () para usar variáveis:
useradd -m ${USERNAME} -c ${USER_FULNAME}
Em segundo lugar, verifique a saída do nome de usuário, talvez inclua caracteres inválidos.
É necessário criar um script bash para criar um nome de usuário a partir de um arquivo que contenha abaixo (nome completo do diretório inicial do nome de usuário)
drs / home / drs Parana Theruwalan
Meu script:
!#/bin/bash
#call data from file
file="file.txt"
USERNAME=$(cat file.txt | cut -d: -f1)
USER_FULLNAME=$(cat file.txt | cut -d: -f2)
useradd -m ($USERNAME) -c ($USER_FULNAME)
Estou recebendo um erro de nome de usuário inválido.
Primeiro você deve remover o () para usar variáveis:
useradd -m ${USERNAME} -c ${USER_FULNAME}
Em segundo lugar, verifique a saída do nome de usuário, talvez inclua caracteres inválidos.
Aqui você vai:
#!/bin/bash
#call data from file
FILE="file.txt"
USERNAME=$(cut -d " " -f 1 $FILE)
USER_FULLNAME=$(cut -d " " -f 3,4 $FILE)
useradd -m -c "${USER_FULLNAME}" "${USERNAME}"
Quais são os seus separadores, espaço ou cólon? Seu exemplo sugere espaço, seu código sugere cólon.
Você pode fazer isso no bash.
#!/bin/bash
file="file.txt"
while IFS=: read USERNAME USER_HOME USER_FULLNAME; do
useradd -m -c "$USER_FULLNAME" -d "$USER_HOME" "$USERNAME"
done < "$file"
Este exemplo assume como entrada um arquivo com linhas como
drs:/home/drs:Paranas Theruwalan
Tags accounts