shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Ajuda com sed


From: Naira Kaieski
Subject: Ajuda com sed
Date: Wed, 04 Apr 2012 13:48:31 -0300
User-agent: Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20120327 Thunderbird/11.0.1

Boa tarde,

Pessoal estou "me batendo" em um script com sed e como já olhei várias vezes e fiz diversos testes venho pedir ajuda para os integrantes da lista.

O que quero fazer é migrar em torno de 300 usuários que tenho cadastrados em um servidor Linux para outro, na verdade tenho usuários do SO e também do samba a serem migrados.

Como estou trocando da distro Gentoo para RedHat Enterprise 6.2 estou recadastrando todos os usuários novamente. Estou pretendendo migrar as senhas tanto do SO quanto do Samba copiando a hash da senha de cada usuário.

Segue o script que elaborei para cadastrar novamente os usuários no SO:

ARQUIVOS_PASSWD="passwd_a_ser_migrado"
ARQUIVOS_SHADOW="shadow_a_ser_migrado"
ARQUIVOS_GROUP="group_a_ser_migrado"
ARQUSUARIOS="apenas_usuarios"
ARQMAQUINAS="apenas_maquinas"
ARQGRUPOS="apenas_grupos"
SHADOW="/etc/shadow"
GRUPOPADRAO="100"

AWK=`which awk`
CAT=`which cat`
ECHO=`which echo`
GPASSWD=`which gpasswd`
GREP=`which grep`
GROUPADD=`which groupadd`
SED=`which sed`
SORT=`which sort`
TR=`which tr`
USERADD=`which useradd`

# apenas cadastro de usuarios - ordenados
$CAT $ARQUIVOS_PASSWD | $GREP -v "$:" | $SORT > $ARQUSUARIOS
# apenas cadastro de maquinas - ordenados
$CAT $ARQUIVOS_PASSWD | $GREP "$:" | $SORT > $ARQMAQUINAS

$CAT $ARQUSUARIOS | while read registro; do
        usuario=`$ECHO $registro | cut -d: -f1`
        informacoes=`$ECHO $registro | cut -d: -f5`
        diretoriopessoal=`$ECHO $registro | cut -d: -f6`
        shell=`$ECHO $registro | cut -d: -f7`
        # senha do SO arquivo shadow
        senha=`$CAT $ARQUIVOS_SHADOW | $GREP "^$usuario:" | cut -d: -f2`
        # cadastrar usuario no SO com senha
$USERADD --home-dir $diretoriopessoal --no-create-home --gid $GRUPOPADRAO --no-user-group --comment "$informacoes" --shell $shell $usuario

        # trocar a hash de senha do SO onde ; eh o delimitador
        # AQUI ESTA O PROBLEMA
        $SED -i '/^$usuario:/s;:!!:;:$senha:;' $SHADOW
        $ECHO "$SED -i '/^$usuario:/s;:!!:;:$senha:;g' $SHADOW"

done

Eu executei um echo no comando sed para verificar a como esta estava sendo executado. Se eu pegar a saída do comando echo no sed e executar diretamente no shell do servidor o comando funciona que é uma beleza. Mas dentro do script o comando sed não funciona...

Alguém poderia me ajudar?

--
Atenciosamente,
Naira Kaieski
Núcleo de Internet e Redes - Faccat
Linux Professional Institute - LPI 101



reply via email to

[Prev in Thread] Current Thread [Next in Thread]