Substuição de conteúdo - Shell Script
Olá pessoal,
Possuo um arquivo gigante, que em cada linha possui um registro que faz referência a um usuário. Este arquivo tem que ser modificado para se adequar aos padrões do novo servidor (método para migrar os usuários de uma plataforma webmin para o cpanel).
Bom, vejamos um exemplo (vou utilizar aqui 4 linhas apenas).
Arquivo de configuração do servidor antigo:
Código HTML:
zanella:x:571:610:ZANELLA CORRETORA DE SEGUROS LTDA:/home/mensagem/zanella:/sbin/nologin
ernesto:x:572:610:ERNESTO TARCISIO BAGGIO:/home/mensagem/ernesto:/sbin/nologin
felipe:x:578:610:felipe zibell:/home/mensagem/felipe:/sbin/nologin
debora:x:579:610ebora Nedel:/home/mensagem/debora:/sbin/nologin
Arquivo modificado e pronto para ser usado no servidor novo:
Código HTML:
felipe:x:578:610:felipe zibell:/dominios/stche/mail/stcheturbo.com.br/felipe:/dominios/stche
debora:x:579:610ebora Nedel:/dominios/stche/mail/stcheturbo.com.br/debora:/dominios/stche
nedel:x:581:610:Clovis Nedel:/dominios/stche/mail/stcheturbo.com.br/nedel:/dominios/stche
farias:x:611:610:Farias Dema:/dominios/stche/mail/stcheturbo.com.br/farias:/dominios/stche
Bom, possuo aproximadamente 8 mil linhas neste arquivo, com várias destas entradas. Como elas possuem um padrão, creio que seja então possível criar um script para automatizar este trabalho.
Se alguém puder me ajudar com um script útil, serei eternamente grato.
Re: Conversão de formatos - Shell Script
Citação:
Postado originalmente por
danielvasc
Olá pessoal,
Possuo um arquivo gigante, que em cada linha possui um registro que faz referência a um usuário. Este arquivo tem que ser modificado para se adequar aos padrões do novo servidor (método para migrar os usuários de uma plataforma webmin para o cpanel).
Bom, vejamos um exemplo (vou utilizar aqui 4 linhas apenas).
Arquivo de configuração do servidor antigo:
Código HTML:
zanella:x:571:610:ZANELLA CORRETORA DE SEGUROS LTDA:/home/mensagem/zanella:/sbin/nologin
ernesto:x:572:610:ERNESTO TARCISIO BAGGIO:/home/mensagem/ernesto:/sbin/nologin
felipe:x:578:610:felipe zibell:/home/mensagem/felipe:/sbin/nologin
debora:x:579:610ebora Nedel:/home/mensagem/debora:/sbin/nologin
Arquivo modificado e pronto para ser usado no servidor novo:
Código HTML:
felipe:x:578:610:felipe zibell:/dominios/stche/mail/stcheturbo.com.br/felipe:/dominios/stche
debora:x:579:610ebora Nedel:/dominios/stche/mail/stcheturbo.com.br/debora:/dominios/stche
nedel:x:581:610:Clovis Nedel:/dominios/stche/mail/stcheturbo.com.br/nedel:/dominios/stche
farias:x:611:610:Farias Dema:/dominios/stche/mail/stcheturbo.com.br/farias:/dominios/stche
Bom, possuo aproximadamente 8 mil linhas neste arquivo, com várias destas entradas. Como elas possuem um padrão, creio que seja então possível criar um script para automatizar este trabalho.
Se alguém puder me ajudar com um script útil, serei eternamente grato.
Daniel,
Seu arquivo de origem está deformado. Veja que em "610ebora", estão faltando caracteres. Talvez tenham sido tratados como emoticon pelo editor WYSIWYG do Under-Linux, comportamento que acontece quando o usuário não marca a opção "Desativar smilies do texto".
Supondo que seu arquivo de origem esteja íntegro, o script que você precisa está demonstrado abaixo, considerando o exemplo informado por você, considerando que "ul-origem.txt" é sua origem e "ul-destino.txt" é seu arquivo de destino.
Faça um teste e veja se está de acordo o script. Com base na fonte e modelo de saída fornecido por você, está OK :)
Código :
awk '{split($0, z, ":"); print z[1]":"z[2]":"z[3]":"z[4]":"z[5]":/dominios/stche/mail/stcheturbo.com.br/"z[1]":/dominios/stche"}' ul-origem.txt > ul-destino.txt
Re: Substuição de conteúdo - Shell Script
Perfeito, funcionou do jeito esperado!
Respondendo a sua dúvida, sim, foram os emoticons do fórum que ocasionaram aquelas falhas no texto que eu havia inserido.
Bom, meu problema não terminou por aqui. Veja se pode me ajudar mais um pouquinho.
Além deste arquivo "passwd", tenho o arquivo "shadow". Dentro deste arquivo não há nada a ser substuído, mas eu preciso fazer o seguinte:
- Checar se o usuário contido no passwd está contido no shadow. Pois preciso deixar o shadow com os mesmos usuários contidos no "passwd".
Seria basicamente assim (vou esboçar a ideia):
No arquivo passwd, lê a primeira palavra da primeira linha (no caso, o nome de usuário). Seguindo o meu exemplo, seria o usuário "zanella". Depois, faz uma comparação: Se este usuário estiver no arquivo shadow, jogar essa linha do shadow em um novo arquivo. Dessa maneira, os dois arquivos iam conter o mesmo número de linhas, com os mesmos usuários.
Re: Substuição de conteúdo - Shell Script
Citação:
Postado originalmente por
danielvasc
Perfeito, funcionou do jeito esperado!
Que boa notícia :D
Citação:
Postado originalmente por
danielvasc
Respondendo a sua dúvida, sim, foram os emoticons do fórum que ocasionaram aquelas falhas no texto que eu havia inserido.
Ok :)
Citação:
Postado originalmente por
danielvasc
Bom, meu problema não terminou por aqui. Veja se pode me ajudar mais um pouquinho.
Além deste arquivo "passwd", tenho o arquivo "shadow". Dentro deste arquivo não há nada a ser substuído, mas eu preciso fazer o seguinte:
- Checar se o usuário contido no passwd está contido no shadow. Pois preciso deixar o shadow com os mesmos usuários contidos no "passwd".
Seria basicamente assim (vou esboçar a ideia):
No arquivo passwd, lê a primeira palavra da primeira linha (no caso, o nome de usuário). Seguindo o meu exemplo, seria o usuário "zanella". Depois, faz uma comparação: Se este usuário estiver no arquivo shadow, jogar essa linha do shadow em um novo arquivo. Dessa maneira, os dois arquivos iam conter o mesmo número de linhas, com os mesmos usuários.
Daniel, veja se os comandos pwck e grpck não resolvem seu problema ;)
Re: Substuição de conteúdo - Shell Script
Não resolve. Preciso fazer aquela jogada lá que te disse antes :(