Criando Usuários a partir de um arquivo .csv [duplicado]

0

Estou tentando criar usuários importando seus dados de um arquivo .csv usando um script bash. Eu sei o básico para bash , mas estou ficando confuso usando loops para criar esse script. O modelo para o .csv é o seguinte:

Surname,Name,Username,Department,Password
    
por LinuxUSer 02.01.2018 / 19:50

1 resposta

0

Isso deve funcionar para você ou pelo menos ajudá-lo a seguir na direção certa:

#! /usr/bin/env bash -
#set -x

MY_INPUT='/root/temp/input'
declare -a A_SURNAME
declare -a A_NAME
declare -a A_USERNAME
declare -a A_DEPARTMENT
declare -a A_PASSWORD
while IFS=, read -r COL1 COL2 COL3 COL4 COL5 TRASH; do
    A_SURNAME+=("$COL1")
    A_NAME+=("$COL2")
    A_USERNAME+=("$COL3")
    A_DEPARTMENT+=("$COL4")
    A_PASSWORD+=("$COL5")
done <"$MY_INPUT"

for index in "${!A_USERNAME[@]}"; do
    useradd -g "${A_DEPARTMENT[$index]}" -d "/home/${A_USERNAME[$index]}" -s /bin/bash -p "$(echo "${A_PASSWORD[$index]}" | openssl passwd -1 -stdin)" "${A_USERNAME[$index]}"
done

O loop while lerá o arquivo csv e criará matrizes para cada coluna. o valor TRASH está lá para coletar quaisquer campos adicionais que possam estar no seu arquivo csv . Caso contrário, se você tivesse isso, por exemplo: surname,name,username,department,password,anextrafield

COL5 seria definido como: passwordanextrafield

Independentemente disso, acho que configurar as matrizes pode não ser necessário para você (como você poderia criar seus usuários apenas dentro do loop while), mas eu queria mostrar dessa maneira que aprendi a trabalhar com o loop através de um arquivo delimitado.

Após o loop for ser executado pelos valores de índice do array A_USERNAME (poderia ter sido qualquer um dos arrays) e agir sobre eles para criar usuários.

useradd

  1. %código%
    • Isso adicionará o usuário recém-criado a um grupo com o nome do departamento (nota: esse grupo já deve existir ou o comando terá erro)
  2. %código%
    • Isso definirá o diretório inicial do usuário recém-criado como -g "${A_DEPARTMENT[$index]}"
  3. %código%
    • Defina o shell de login do usuário recém-criado como -d "/home/${A_USERNAME[$index]}"
  4. %código%
    • Obtém a senha do seu csv e usa o openssl para gerar uma senha MD5 com ela
  5. %código%
    • O usuário para criar.
por 02.01.2018 / 20:33