Ir ao conteúdo

Bat como criar um arquivo .bat para fazer download de arquivos de log via ftp


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Postado

Boa tarde pessoal,

todo dia pela manhã preciso fazer o download de mais ou menos 300 arquivos de logs para rodar um script em python e analisar eles a procura de erros, minha dúvida é a seguinte: 
Utilizamos o WinSCP pra fazer esse acesso via FTP pra copiar os arquivos, queria fazer esse processo automaticamente via bat pra facilitar minha vida, se alguém souber como fazer ajudaria muito. 

 

Postado

@ricardo_br quando acesso via WinSCP ja vai pra pasta raiz, eu copio tudo que tem la exceto a unica pasta que tem la dentro que e backup dos dias anteriores, eles também não estão numerados, estão organizados por ordem alfabética... 
A intenção é pegar todos arquivos .txt desse diretório exceto a pasta e jogar pra uma pasta local.

Postado

@ricardo_br Isso, seria usando o WinSCP (se tiver alguma solução mais fácil também, aceito dicas rs como não conheço esse tipo de processo não sei dizer)

 

Servidor ele usa um centos, provavelmente num S3 da AWS mas não sei exatamente pois já peguei a máquina configurada. 

Postado

Veja se é isso mesmo:

 

Ups..não tinha visto que a extensão dos arquivos na verdade é *.txt e não *.log, mais ai é só trocar no arquivo bat...

 

 

@echo off

:: Informe aqui o caminho para o WinScp:
set "Winscp=%localappdata%\Programs\WinSCP\winscp.com"

:: Informe seu Servidor FTP
set Servidor=ftp.drivehq.com

:: Informe o nome do usuario do seu FTP:
set Usuario=

:: Informe a senha do seu FTP:
set Senha=

:: Informe a Pasta remota:
set PastaR=/

:: Informe a extensão dos arquivos que quer:
set Extensao=*.log

:: Informe a Pasta Local onde deseja salvar seus arquivos remotos:
set PastaL=Local

IF /i not Exist "%PastaL%" md "%PastaL%"

"%Winscp%" /command "open ""ftp://%Usuario%:%Senha%@%Servidor%""" "get ""%PastaR%/*"" -filemask=%Extencao%|*\ ""%PastaL%\""" "exit"

 

  • Curtir 2
Postado

@ricardo_br Opa, bom dia!
 Eu copiei e alterei os caminhos, desse jeito: 

 

@echo off

:: Informe aqui o caminho para o WinScp:
set "Winscp=%programfiles(x86)%\WinSCP\WinSCP.exe"

:: Informe seu Servidor FTP
set Servidor=192.168.56.1

:: Informe o nome do usuario do seu FTP:
set Usuario=anderson

:: Informe a senha do seu FTP:
set Senha=1234

:: Informe a Pasta remota:
set PastaR=/

:: Informe a extensão dos arquivos que quer:
set Extensao=*.log

:: Informe a Pasta Local onde deseja salvar seus arquivos remotos:
set PastaL=Local

IF /i not Exist "%PastaL%" md "%PastaL%"

"%Winscp%" /command "open ""ftp://%Usuario%:%Senha%@%Servidor%""" "get ""%PastaR%/*"" -filemask=%Extencao%|*\ ""%PastaL%\""" "exit"


Tenho um servidor local para teste mas ao executar o bat ele não abre, como se executasse e milissegundos depois fecha... 
Mas o resultado seria pra isso mesmo, exatamente como o seu vídeo mostra.

Postado

Sabe informar qual é porta usada? em servidor tente 192.168.56.1:21 ou a porta que você configurou no seu servidor FTP. Em caminho para WinSCP troque winscp.exe por winscp.com

 

Se o seu servidor for SSH troque ftp por sftp em ""open ""ftp:

 

Ao final do batch coloque um pause ai vai poder ver possíveis erros reportados:

 

"%Winscp%" /command "open ""ftp://%Usuario%:%Senha%@%Servidor%""" "get ""%PastaR%/*"" -filemask=%Extensao%|*\ ""%PastaL%\""" "exit"
pause

 

  • Curtir 1
Postado

@ricardo_br Criei uma conta na drivehq como você mostra ali e funcionou, 100%... 
agora tenho que ver como vou fazer a respeito da conexão que tenho com o winscp, talvez pegando o acesso de login e senha com eles resolva pois só tenho o arquivo de key pra acesso que ja vem configurado.
Mas de qualquer forma, muito obrigado pela ajuda Ricardo, continuarei aqui na luta rs

  • Solução
Postado

@AndCavichioli Para conectar com esse arquivo "key'" você deve mudar o comando:

 

%Winscp%" /command "open ""sftp://%Usuario%@%Servidor%"" -privatekey=""{CaminhoParaArquivoKey}""" "get ""%PastaR%/*"" -filemask=%Extensao%|*\ ""%PastaL%\""" "exit

 

Onde você deverá substituir {CaminhoParaArquivoKey} pelo caminho do arquivo key que você tem...

  • Curtir 1
  • 2 meses depois...
Postado

Ajudou muito essa scritp,

 

Agora preciso apenas que a gravação dos arquivos seja no sentido contrário.

Preciso puxar da pasta local e grava na pasta remota.

O que mudar?

  • 2 meses depois...
Postado

@ricardo_br

Boa tarde 

 

"%Winscp%" /command "open ""ftp://%Usuario%:%Senha%@%Servidor%""" "get ""%PastaR%/*"" -filemask=%Extensao%|*\ ""%PastaL%\""" "exit"

 

esse comando acima me ajudou muito, mas eu tenho cerca de 8 arquivos no meu servidor e queria copiar somente o mais recente, por ex: 13/07/2022, teria como?

Obrigado

 

PS: Resolvi, foi fácil.
somente adicionei -latest entre as aspas e -filemask, ficando assim: 

 

"%Winscp%" /command "open ""ftp://%Usuario%:%Senha%@%Servidor%""" "get ""%PastaR%/*"" -latest -filemask=%Extensao%|*\ ""%PastaL%\""" "exit"

 

o comando somente copia o arquivo com data mais recente.
caso alguém tenha essa duvida.

  • Curtir 1
  • mês depois...
Postado

Boa tarde, tudo bem?

Script esta me ajudando bastante, obrigado pela disponibilização.

 

Estou precisando de uma alteração nele, alguém saberia me ajudar? Estou precisando que copie tudo do local, pasta e arquivos, porém só consigo copiar arquivos, pasta não.

 

Desde já, Obrigado.

Postado

 

@AndCavichioli @bagassera Sabe como fazer o script ao contrario? fazendo upload de uma pasta local pra pasta remota? Estou precisando muito também.

 

Coloquei dessa forma abaixo; mas retorna nenhuma correspondencia de ficheiro, ao contrario funcionou perfeitamente.

 

@echo off

:: Informe aqui o caminho para o WinScp:
set "Winscp=%programfiles(x86)%\WinSCP\winscp.com"

:: Informe seu Servidor SFT
set Servidor=

:: Informe o nome do usuario do seu SFT
set Usuario=

:: Informe a senha do seu SFT
set Senha=

:: Informe a Pasta Local:
set PastaL=C:\ServComNET\Saida

:: Informe a extensão dos arquivos que quer:
set Extencao=*.txt

:: Informe a Pasta Remota
set PastaR=/opt/ponto/3109/upload

IF /i not Exist "%PastaL%" md "%PastaL%"

"%Winscp%" /command "open ""sftp://%Usuario%:%Senha%@%Servidor%""" "get ""%PastaL%\*"" -filemask=*.* ""%PastaR%/""" "exit"

pause

Postado

@Alef-PC Sim, basicamente basta trocar get por put, tente assim:

 

@echo off

:: Informe aqui o caminho para o WinScp:
set "Winscp=%programfiles(x86)%\WinSCP\winscp.com"

:: Informe seu Servidor SFT
set Servidor=

:: Informe o nome do usuario do seu SFT
set Usuario=

:: Informe a senha do seu SFT
set Senha=

:: Informe a Pasta Local:
set PastaL=C:\ServComNET\Saida

:: Informe a extensão dos arquivos que quer:
set Extencao=*.txt

:: Informe a Pasta Remota
set PastaR=/opt/ponto/3109/upload

IF /i not Exist "%PastaL%" md "%PastaL%"

"%Winscp%" /command "open ""sftp://%Usuario%:%Senha%@%Servidor%""" "put *.* ""%PastaL%\"" -filemask=*.* ""%PastaR%""" "exit"

pause

 

  • 2 semanas depois...
Postado

@ricardo_br

Fiz a modificação no script, mas o bat parou de funciona.

 

Comando:

"%Winscp%" /command "open ""ftp://%Usuario%:%Senha%@%Servidor%""" "get ""%PastaR%/*"" -filemask="*>=today" *\ ""%PastaL%\""" "exit"

 

Como devo está colocando o filtro no comando? 

  • 3 semanas depois...
Postado

Boa tarde, como o amigo acima respondeu  eu queria fazer o comando inverso, de copiar do local para o servidor! Vou te encaminhar como está o Script e como o erro aparece, gostaria de ajuda dos colegas para sanar tal duvida !

image.png.0c9ac338fd5f3dfb0675e601db55fc61.png

Imagem de Erro!
 

Citação

@echo off

set "Winscp=%programfiles(x86)%\WinSCP\winscp.com"
set Servidor=web11.senior.com.br:27
set Usuario=granja
set Senha=***********
set PastaL=C:\Users\Fernando\Desktop\RHSENIOR
set Extensao=*.txt
set PastaR=/Ponto/Teste
IF /i not Exist "%PastaL%" md "%Pasta%"
"%Winscp%" /command "open ""ftp://%Usuario%:%Senha%@%Servidor%""" "put ""%PastaL%/*"" -filemask=%Extensao%|*\  ""%PastaR%\""" "exit"

Esse e o Script q estou usando, queria adicionar tmb para copiar somente os arquivos do dia?

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...