Cria o script do usuário a partir do arquivo CSV [fechado]

-2

Como criar um script de shell user_create.sh para analisar um arquivo csv e criar contas de usuário. As permissões padrão de cada conta de usuário devem ser legíveis - graváveis - executáveis para o proprietário, legíveis - executáveis por grupo membros, e nenhum acesso permite que outros. O arquivo CSV é delimitado por vírgulas, com as seguintes colunas:

  • Nome real
  • Nome de usuário
  • Senha padrão (necessária para ser alterada no primeiro login)
  • Nome do grupo

Tarefa Cron que registra o uso de disco de cada usuário no sistema às 23h59 todos os dias e anexa esses registros a um arquivo de log /var/log/storage.log .

Abaixo está o que eu tenho agora, mas por alguma razão não vai funcionar.

Abaixo está o que eu tenho agora, mas por alguma razão não vai funcionar.

#!/bin/bash
INPUT=data.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read accountname username password groupname
do
useradd -p $password -g groupname -c $accountname -s /bin/sh $username
done < $INPUT
IFS=$OLDIFS

Aqui está uma parte do meu arquivo cvs:

AMELIA SMITH,asmith,AeMga7du,seniormanagement
OLIVIA JOHNSON,ojohnson,AhBob0e0,helpdesk
EMILY WILLIAMS,ewilliams,Ees3uiW0,products
AVA BROWN,abrown,rooyie8G,R&D
ISLA JONES,ijones,aeN6bohp,operations
JESSICA MILLER,jmiller,Eiqu3voh,R&D
POPPY DAVIS,pdavis,Eed3teiv,R&D
ISABELLA GARCIA,igarcia,eeNgi30h,sales
    
por jo dabis 22.05.2017 / 07:42

1 resposta

1

Pelo que vi no seu próprio script, com o objetivo de criar usuários, algo assim funcionará para você:

  • Lembre-se
    • O nome do grupo não deve conter espaço em branco
    • Você simplesmente não pode usar -p password , a senha deve ser criptografada primeiro.

script.sh:

#!/bin/bash

file="data"

IFS=","

while read name user pass group
do

getent group $group >/dev/null || groupadd $group   

useradd -m -g $group $user -s /bin/bash

chpasswd <<< "$user:$pass"

# force user to change his/her password after login
passwd -e $user

done < "$file"

para monitorar o espaço em disco, sugiro algo assim em /etc/crontab file:

59 23 * * * root bash -c "echo ----; date; du -hd1 /home;" >> /var/log/storage.log
    
por Ravexina 22.05.2017 / 09:30