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

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

Re: [shell-script] Ajuda com sed


From: Cléoson Barreto
Subject: Re: [shell-script] Ajuda com sed
Date: Wed, 4 Apr 2012 14:08:14 -0300

Olá!

     Você não disse o erro que está acontecendo, então vou chutar: talvez a
aspa simples no sed não esteja deixando o shell "ver" a variável. Tente
colocar aspas duplas.

[]'s
Cléoson.

Em 4 de abril de 2012 13:48, Naira Kaieski <address@hidden> escreveu:

> **
>
>
> 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
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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