Adiciona usuários do arquivo dat

0

Eu tenho um arquivo dat com nomes. Estes são os nomes dos usuários que devo adicionar, sem grupos ou senhas. Claro que tenho que remover todos os espaços. Eu tenho que adicioná-los com um script bash. Alguém pode me ajudar a escrever o roteiro?

Arquivo:

Marianne        Earman
Justina Dragaj
Mandy   Mcdonnell
Conrad  Lanfear
Cyril   Behen
Shelley Groden
Rosalind        Krenzke
Davis   Brevard
Winnie  Reich
Trudy   Worlds
Deshawn Inafuku
Claudio Loose
Sal     Pindell
Cristina        Sharper
Tricia  Kruss

Meu script:

#!/bin/bash
#users.dat | sed "s/\t\t*/ /g"
while read p; do
  #var=$(echo $p | sed "s/\t\t*/ /g")
  var= echo $p | sed '/^$/d;s/[[:blank:]]//g'
  #sudo useradd $var
  sudo useradd $var
 done < users.dat
    
por user64047 31.03.2014 / 19:06

2 respostas

1

Isso pode ser feito em um único pipeline - basta usar xargs para executar useradd para cada linha em sua entrada:

sed '/^[[:space:]]*$/d; s/[[:space:]]//g' users.dat |
  xargs -I{} echo {}

Substitua echo por useradd quando tiver certeza de que está fazendo a coisa certa.

Note também que se você está escrevendo isto para um sistema baseado no Debian (eg Ubuntu, Linux Mint), você deve considerar usar adduser ao invés de useradd . Para mais detalhes veja - O que o adduser faz que o useradd não possui? / a>

    
por 31.03.2014 / 21:09
0

Você precisa armazenar a saída do echo na variável var anexando $ antes de executar o comando. Dessa forma, var agora terá a saída do comando anterior. Experimente o script abaixo. Deve funcionar bem.

#!/bin/bash
while read p; do
var=$(echo $p | sed '/^$/d;s/[[:blank:]]//g')
  echo $var
  #sudo useradd $var
 done < users.dat 
    
por 31.03.2014 / 21:03