Com o script a seguir, estou tentando criar usuários, grupos e senha a partir de um arquivo txt / cvs.
Aqui está o script:
#!/bin/bash
set -xv
filein="file.csv"
IFS=$'\n'
if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=$(cut -d: -f 6 "$filein" | sed 's/ //')
fullnames=$(cut -d: -f 1 "$filein")
usernames=$(cut -d: -f 1 "$filein" | tr '[:upper:]' '[:lower:]' | awk '{print substr($1,1,1) $2}')
fi
for group in ${groups[*]}
do
grep -q "^$group" /etc/group ; (( x=$? ))
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done
x=0
created=0
for user in ${usernames[*]}
do
useradd -n -c ${fullnames[$x]} -g "${groups[$x]}" $user 2> /dev/null
if [ $? -eq 0 ]
then
(( created=created+1 ))
fi
done
echo "${usernames[$x]}" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."
Esta manhã usei shellchek
no meu script e modifico parte do código, mas ainda assim tenho 2 problemas.
Um dos problemas é que estou recebendo um erro de shellcheck
dizendo:
In test.sh line 29:
useradd -n -c ${fullnames[$x]} -g "${groups[$x]}" $user 2> /dev/null
^-- SC2086: Double quote to prevent globbing and word splitting.
^-- SC2086: Double quote to prevent globbing and word splitting.
O outro problema que estou tendo é quando tento criar senhas para os nomes de usuários (o mesmo que o nome de usuário).
echo "${usernames[$x]}" | passwd --stdin "$user" > /dev/null
O Ubuntu não encontrou o comando --stdin
e já faz um tempo que estou procurando uma solução, mas sem resultado.
Estou apenas começando a criar scripts de shell. Se puderem, por favor, ajudar-me a executar esse script seria incrível.
Obrigado antecipadamente.