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

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

Re: [shell-script] Atualização de arquivos em N pastas


From: Paulo Bettega
Subject: Re: [shell-script] Atualização de arquivos em N pastas
Date: Sat, 01 Feb 2014 00:21:25 -0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

Olá Mestre Júlio, é verdade botar login e senha dentro do script
é péssimo negócio, mesmo num teste, porque acaba acostumando:)
Essa chutei pra fora do estádio a la Nelinho...


O man do ftp no Slackware tem o seguinte:
     site arg1 arg2 ...
                 The arguments specified are sent, verbatim, to the remote FTP
                 server as a SITE command.

Acho que não são arquivos com comandos, são argumentos.
Testei mandar esse arquivo abaixo mas não deu resultado.
O arquivo é executável, testei com aspas, apóstrofo, com e sem
#!/bin/sh mas não funfou.

$ cat teste
touch teste

ftp -ivn 10.10.1.1 << eoftp
user paulo senha
site teste
eoftp

Remote system type is UNIX.
Using binary mode to transfer files.
331 User paulo OK. Password required
230-User paulo has group access to:  65534
230 OK. Current directory is /
500 SITE teste is an unknown extension
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.

Mas não consegui achar uma lista dos tais argumentos, chutando alguns
comandos tentei touch, cp, mv, todos eles retornam 500 SITE mv is an unknown 
extension.
Tentei com o exec também, mas deu o mesmo 500 SITE exec is an unknown extension.

O que eu achei referência na internet foi chmod, esse sim é executado
550 Could not change perms on lista-shell
não deixou mudar as permissões por restrição no servidor.

O SITE é uma extensão que pode ser ou não incluída na compilação,
achei algo sobre isso no readme do Pure-ftpd (é o server de testes:) )
Abraços
Paulo Bettega


On 31-01-2014 22:11, Julio C. Neves wrote:
Fala Paulo,
se a sua interpretação do que o 
Cara_que_continua_sem_assinar_o_email_e_sem_explicar_direito quis
dizer, fazer 2 colocações:
» Evite usar nome e senha no script. É melhor fazer:
read -p "Login Name na máquina remota ($LOGNAME): " user # oferece $LOGNAME 
como default
user=${user:-$LOGNAME} # se user estiver vazia, recebe o default
read -sp "Senha: " senha

» No ftp do UNIX vc podia executar uma instrução remota com o cmd:
site exec cmd
Fui ler o man do GNU ftp e a sintaxe é:

site arq1 arq2 arq3 ...

se não me engano, nesses arqs vc põe os cmds que serão executados no host 
remoto. Vale a pena sondar
isso na internet e se alguém testar, peço que informe na lista ou em pvt para 
mim o resultado do teste.

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell *

*Cidade*

        

*Local*

        

*Período*

São Paulo

        

4Linux <http://www.4linux.com.br/>

        

03-07/02

Curitiba

        

SoftSell <http://www.softsell.com.br/>

        

17-21/02

Rio de Janeiro

        

EDX <http://edx.srv.br/>

        

10-14/03

Dou treinamento de shell em qualquercidade.
Para detalhes, entreem contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc



Em 31 de janeiro de 2014 20:50, Paulo Bettega <address@hidden
<mailto:address@hidden>> escreveu:

    Olá Robson, o Cara_que_continua_sem_assinar_o_email quer mandar os
    arquivos para um ftp, então teria que enviar os arquivos antes.


    #!/bin/bash
    origem=/pasta
    destino=/destino
    end_ftp='10.10.1.1'
    user='user'
    senha='senha'

    for arq in $origem/*
    do
    ftp -ivn "$end_ftp" << eofftp
    user "$user" "$senha"
    binary
    mkdir $(dirname $arq)
    send $arq $arq
    eofftp
    done


    Não sei se dá pra fazer um find remoto:) seguindo o teu exemplo.
    Se fosse ssh ao invés de ftp seria mais fácil, executando
    todos os comando direto na máquina remota.

    Abraços e desculpem alguma trave:)
    Paulo Bettega



    On 31-01-2014 18:23, Robson Alexandre wrote:
     > Caro Cara_que_continua_sem_assinar_o_email,
     >
     > acho q compreendi o q vc está tentando fazer.
     >
     > então veja se a lógica está correta,
     > para cada arquivo em pasta/ executo um find em destino/ e copio de 
origem para destino.
     >
     > #!/bin/bash
     > origem=/pasta
     > destino=/destino
     >
     > for arq in $origem/*
     > do
     > cp -v $arq $(find $destino -name $(basename $arq))
     > done
     >
     >
     >
     > Atenciosamente
     > Robson Alexandre
     >
     >
     >
     >
     > Em 31 de janeiro de 2014 15:59, _ _ <address@hidden 
<mailto:address@hidden>
    <mailto:address@hidden <mailto:address@hidden>>> escreveu:
     >
     >     __
     >
     >     Julio, obrigado pela resposta e ajuda. Esqueci de assinar mesmo.
     >
     >     Dei um find nos dois diretórios e gravei no log. Este procedimento é
     >     para 1 caso de pasta, tenho mais de 1 caso, mas é a mesma coisa para 
os
     >     outros.
     >
     >     Bom, acho que agora vai ficar mais fácil de entender. Tentei 
explicar,
     >     mas compliquei mais.
     >
     >     Preciso atualizar todos os arquivos do anexo "pasta.log" nos 
destinos do
     >     "diretorio_subdiretorio_arquivo.log"
     >
     >     Os mesmos arquivos existem nos dois lados, a diferença é que os da
     >     "pasta.log" estão atualizados.
     >
     >     O problema é que do outro lado, no DESTINO, tenho vários diretórios.
     >
     >     Julio, eu não manjo nada de scripts.
     >
     >     Em 31-01-2014 15:26, Julio C. Neves escreveu:
     >
     >
     >      > Olá Cara_que_não_assinou_o_email,
     >      >
     >      > Tá complicado de entender, mas veja:
     >      >
     >      > ComSeps=$(ls | sed -r
     >      > 's/^(agua|fogo|terra|ar)(agua|fogo|terra|ar)(.*)$/\1:\2:\3'
     >      > # Dentro de $ComSeps, as coisas estarão assim: fogo:terra:2.ext
     >      > for Arq in $ComSeps
     >      > {
     >      > mv $(sed 's/://g' <<< $Arq) /$(cut -f1 -d: <<< $Arq)/$(cut -f2 -d:
     >      > <<< $Arq)
     >      > }
     >      >
     >      > Se eu entendi o que vc quis dizer, isso deve funcionar, porém não 
testei.
     >      >
     >      > Abcs,
     >      > Julio
     >      > *@juliobash*
     >      >
     >      > *Próximos cursos de Shell *
     >      >
     >      > *Cidade*
     >      >
     >      >
     >      >
     >      > *Local*
     >      >
     >      >
     >      >
     >      > *Período*
     >      >
     >      > São Paulo
     >      >
     >      >
     >      >
     >      > 4Linux <http://www.4linux.com.br/>
     >      >
     >      >
     >      >
     >      > 03-07/02
     >      >
     >      > Curitiba
     >      >
     >      >
     >      >
     >      > SoftSell <http://www.softsell.com.br/>
     >      >
     >      >
     >      >
     >      > 17-21/02
     >      >
     >      > Rio de Janeiro
     >      >
     >      >
     >      >
     >      > EDX <http://edx.srv.br/>
     >
     >      >
     >      >
     >      >
     >      > 10-14/03
     >      >
     >      > Dou treinamento de shell em qualquercidade.
     >      > Para detalhes, entreem contato por email ou
     >
     >      > echo 436233889341364416673541503686485725801923229706P | dc
     >      >
     >      >
     >      >
     >      > Em 31 de janeiro de 2014 12:25, <address@hidden 
<mailto:address@hidden>
    <mailto:address@hidden <mailto:address@hidden>>
     >      > <mailto:address@hidden <mailto:address@hidden>
    <mailto:address@hidden <mailto:address@hidden>>>> escreveu:
     >
     >      >
     >      > Grupo, peço licença pra entrar e postar uma solicitação de ajuda.
     >      >
     >      > Tenho 4 pasta, com o nome de 4 categorias.
     >      > Cada categoria tem 3 subcategorias.
     >      > Cada subcategoria, tem n arquivos dentro da pasta.
     >      > São imagens.
     >      > Peguei todas as imagens, de todas as
     >      > ~/categoria/subcategoria/arquivo.ext, e copiei para uma única
     >      > pasta, tudo misturado, chamado "pasta".
     >      > As imagens estão em um FTP, separadas nas pastas assim:
     >      > ~/diretorioX/subdiretorioY/arquivoZ.ext
     >      > Editei estas imagens através de um action de photoshop, e ele
     >      > salva tudo em uma única ~/pasta/ tudo misturado...
     >      > Agora eu preciso fazer upload ORIGEM: ~/pasta/arquivo.ext DESTINO:
     >      > ~/categoria/subcategoria/arquivo.ext
     >      >
     >      > Eu tenho todos os arquivos no DESTINO, mas estão sem edição.
     >      > Preciso ler os arquivos da ~/pasta/ e substituí-lo no
     >      > ~/diretorioX/subdiretorioY/arquivoZ.ext
     >      >
     >      > Exemplos:
     >      >
     >      > Origem: ~/pasta/fogoterra1.ext
     >      > Destino: ~/Fogo/Terra/fogoterra1.ext
     >      >
     >      > Origem: ~/pasta/fogoterra2.ext
     >      > Destino: ~/Fogo/Terra/fogoterra2.ext
     >      >
     >      > Origem: ~/pasta/terraágua1.ext
     >      > Destino: ~/Terra/Água/terraágua1.ext
     >      >
     >      > Origem: ~/pasta/arfogo.ext
     >      > Destino: ~/Ar/Fogo/arfogo.ext
     >      >
     >      > Coloquei um tópico aqui neste fórum também:
     >      >
    
http://www.vivaolinux.com.br/topico/Shell-Script/Script-de-atualizacao-de-arquivos-recursivamente
     >      >
     >      > Agradeço imensamente quem puder me ajudar. Eu ainda não sei
     >      > escrever script. Tenho mais de 800 arquivos pra atualizar em
     >      > inumeras pastas. Na mão é desumano.
     >      >
     >      > Desde já obrigado.
     >      >
     >      >
     >      >
     >
     >     [As partes desta mensagem que não continham texto foram removidas]
     >
     >
     >


    ------------------------------------

    ---------------------------------------------------------------------
    Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem
    insistir em não seguir esta regra será moderado sem prévio aviso.
    ---------------------------------------------------------------------
    Sair da lista: address@hidden
    <mailto:address@hidden>
    ---------------------------------------------------------------------
    Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
    ---------------------------------------------------------------------
    Servidor Newsgroup da lista: news.gmane.org <http://news.gmane.org>
    Grupo: gmane.org.user-groups.programming.shell.brazil

    Links do Yahoo Grupos






reply via email to

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