Em 08/11/07, Denis<[EMAIL PROTECTED]> escreveu: > E ai pessoal, blz? > > > bom, seguinte quero substituir isso: > > jjunior:$1$VyzzTIwz$/y750LY/2CQyKMD8ONlQY/:13816:0:99999:7 > > > por isso: > > jjunior:$2a$10$EA8yiucQjmLCZN/ogamxA.dsrDOGoo.gaytWYhbvCuUB/1TESTE > > isso eh p sincronizar o password do usuario entre 3 maquinas pega o > mais recente e substitui o mais velho. > > fiz um script pra isso que esta ai abaixo, mas o problema sao as > barras dentro da string do sed. Alguem sabe como contornar este > problema? > > #!/bin/bash > #programa para sincronizacao dos passwordsdos usuarios autor denis. > > for i in `diff -y --suppress-common-lines /etc/shadow > /etc/shadow_new|tr -d [:blank:]|tr "|" "%"`; > do > echo atualizando o valor: > echo $i > read > antigo=`echo $i |cut -d "%" -f 2` > novo=`echo $i |cut -d "%" -f 1` > echo "sera colocado $novo no lugar de $antigo no arquivo > /etc/shadow_new \n" > echo "Prosseguir?" > read > sed -i "s/$antigo/$novo/g" /etc/shadow_new > done; > > > tentei colocar as strings entr 'xx' e entre "xx" mas nao foi. > > valeu! > >
Simplesmente troque o separador do sed. O sed aceita vários caracteres como separador dos seus campos, você pode fazer por exemplo assim: sed -i "s#$antigo#$novo#g" /etc/shadow_new Desse jeito você consegue trabalhar facilmente com strings que contenham barras. Isso vale também para a substituição do vim. -- Krishnamurti Lelis Lima Vieira Nunes

