[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
- Ajuda com sed,
Naira Kaieski <=