none
Script vbs para fazer upload ftp com destino dependente do usuário logado RRS feed

  • Pergunta

  • Prezados,

    Gostaria de uma "ajudona" para resolver o seguinte problema:

    Necessito fazer upload ftp de um arquivo de nome fixo para um destino que depende do usuário logado no domínio Windows.

    O par usuário/destino tem que ficar em arquivo, Ex destino.ftp

    Obrigado antecipadamente


    The mind is the Universe Portal

    quarta-feira, 19 de junho de 2013 22:41

Respostas

  • Não muda muita coisa em relação ao que eu já havia passado. Mudou o fluxo.

    SET _Destinos=C:\FTP\destinos.txt
    SET _ScriptFTP=C:\FTP\ftp.scr
    SET ftp_file="C:\Documentos digitalizados\digitalizado.pdf"
    SET ftp_usr=teste
    SET ftp_pwd=1234
    
    :: Localiza o FTP de destino do usuário atual
    for /f "tokens=2 delims=;" %%D in ('find /i "%username%" %_Destinos%') do SET DEST=%%D
    
    :: Escrece FTP.scr
    echo open %DEST% > %_ScriptFTP%
    echo %ftp_usr%>> %_ScriptFTP%
    echo %ftp_pwd%>> %_ScriptFTP%
    echo put %ftp_file%>> %_ScriptFTP%
    echo quit>> %_ScriptFTP%
    
    :: Executa ftp
    ftp.exe -s:%_ScriptFTP%
    
    :: Remove o arquivo local
    del %ftp_file% /q

    Altere o valor das linha que começam com SET para ficar igual ao que o seu ambiente precisa.

    O formato do arquivo destinos.txt é como eu havia passado na primeira postagem (separado por ";")


    Fábio de Paula Junior

    • Marcado como Resposta Kristatus Kinsky quinta-feira, 20 de junho de 2013 22:04
    quinta-feira, 20 de junho de 2013 19:25
    Moderador

Todas as Respostas

  • Kristatus,

    Veja se isto ajuda.

    Vc vai precisar de 3 arquivos:

    1. Arquivo que contém o par usuário destino (c:\temp\destinos.txt)

    kristaus;C:\temp\Kristaus
    fabio;c:\teste

    Veja que nele vc tem que colocar o Login + ";" + diretório de destino

    2. Script que pega o arquivo no ftp (c:\temp\ftp.scr)

    open 200.200.90.1
    usuario
    senha
    get teste.txt
    quit

    3. Script .BAT que vai usar os dois arquivos anteriores

    SET _Destinos=C:\temp\destinos.txt
    SET _ScriptFTP=C:\temp\ftp.scr
    
    :: Localiza no arquivo _Destinos a pasta do usuário atual
    for /f "tokens=2 delims=;" %%D in ('find /i "%username%;" %_Destinos%') do SET DEST=%%D
    
    :: Seta diretório do usuário
    cd %DEST%
    
    :: Executa ftp
    ftp.exe -s:%_ScriptFTP%

    Neste último:

    Primeiro vc seta onde estão os arquivos de destino e o do ftp.

    Em Seguida vc filtra o arquivo de destino para obter a pasta de destino do usuário atual, se você estiver logado no windows com o usuário fabio então a variavel %DEST% será igual a c:\teste.

    Então eu utilizo o CD para colocar o diretório atual como o diretório de destino. 

    Então eu chamo o FTP.exe para rodar o ftp.scr.

    Com certeza você terá que fazer seus ajustes. Fiz tudo com dados fictícios.

    Ref.:

    Using FTP Batch Scripts

    http://support.microsoft.com/kb/96269/en-us


    Fábio de Paula Junior

    quinta-feira, 20 de junho de 2013 13:20
    Moderador
  • Prezado,

    Muito obrigado pela atenção, mas preciso de umas modificações nesta solução, talvez não tenha me feito entender. Mea Culpa.

    Uma maquina que tem um scanner instalado deve fazer upload ftp para diferentes maquinas( Endereço IP) dependendo do usuário que logou na mesma.

    No arquivo que contem a lista de destino  deve ter o nome do usuário e o endereço ip de destino.

    O arquivo que será enviado terá sempre o mesmo nome. Ex. Digitalizado.pdf

    Resumindo, o arquivo deve ser enviado para um endereço IP dependendo do usuário logado na maquina local.

    Necessito que seja em VBS.

    Obrigado antecipadamente. 

     

     


    The mind is the Universe Portal

    quinta-feira, 20 de junho de 2013 16:30
  • Faz o seguinte então, numera cada atividade, exemplo

    1. Arquivo com nome do usuário e destino

    fabio;192.168.1.1

    2. Copiar do ftp;\\\tall \arquivo x para \\192.168.1.1\c$\temp


    Fábio de Paula Junior

    quinta-feira, 20 de junho de 2013 17:08
    Moderador
  • 1. Usuário logado: renato

    2. Arquivo scaneado já gerado: digitalizado.pdf na pasta c:\Documentos digitalizados

    3. arquivo destino.txt tem varias linhas: renato/192.168.1.101

                                                              fabio/192.168.1.104

                                                              Waldemar/192.168.1.200

    4. o script verifica qual usuário esta logado na maquina local do escanner e busca o FTP de destino no arquivo destino.txt

    5. o script faz o FTP do arquivo digitalizado.pdf da maquina local da pasta c:\Documentos digitalizados para o endereço IP buscado no arquivo destino.txt

        obs: o servidor FTP da maquina destino já esta configurado para receber o arquivo e colocar na pasta certa.

    6. o script remove o arquivo local.

    Agradeço toda ajuda dispensada.


    The mind is the Universe Portal


    quinta-feira, 20 de junho de 2013 18:55
  • Não muda muita coisa em relação ao que eu já havia passado. Mudou o fluxo.

    SET _Destinos=C:\FTP\destinos.txt
    SET _ScriptFTP=C:\FTP\ftp.scr
    SET ftp_file="C:\Documentos digitalizados\digitalizado.pdf"
    SET ftp_usr=teste
    SET ftp_pwd=1234
    
    :: Localiza o FTP de destino do usuário atual
    for /f "tokens=2 delims=;" %%D in ('find /i "%username%" %_Destinos%') do SET DEST=%%D
    
    :: Escrece FTP.scr
    echo open %DEST% > %_ScriptFTP%
    echo %ftp_usr%>> %_ScriptFTP%
    echo %ftp_pwd%>> %_ScriptFTP%
    echo put %ftp_file%>> %_ScriptFTP%
    echo quit>> %_ScriptFTP%
    
    :: Executa ftp
    ftp.exe -s:%_ScriptFTP%
    
    :: Remove o arquivo local
    del %ftp_file% /q

    Altere o valor das linha que começam com SET para ficar igual ao que o seu ambiente precisa.

    O formato do arquivo destinos.txt é como eu havia passado na primeira postagem (separado por ";")


    Fábio de Paula Junior

    • Marcado como Resposta Kristatus Kinsky quinta-feira, 20 de junho de 2013 22:04
    quinta-feira, 20 de junho de 2013 19:25
    Moderador
  • Caro Fabio

    o usuário local muda a cada logon consequentemente o destino também mudara a cada logon.

    Por isso a necessidade de verificar por vbs qual o usuário esta logado naquele momento para fazer o FTP para o destino que esta no arquivo "destino.txt".

    Ex. Se o usuário Waldemar esta logado o ftp vai para o endereço 192.168.1.200

    Obrigado pela paciencia

     


    The mind is the Universe Portal

    quinta-feira, 20 de junho de 2013 20:08
  • Vc tem que adicionar no arquivo destinos.txt 

    Waldemar;192.168.1.200


    Fábio de Paula Junior

    quinta-feira, 20 de junho de 2013 20:38
    Moderador
  • Manda o seu script pra eu ver como vc configurou os SETs.

    Fábio de Paula Junior

    quinta-feira, 20 de junho de 2013 20:38
    Moderador
  • A solução suporte mais linhas no arquivo destinos.txt?


    The mind is the Universe Portal

    quinta-feira, 20 de junho de 2013 20:50
  • Sim, não percebeu no primeiro exemplo?

    kristaus;192.168.0.1
    fabio;192.168.0.2

    Só que na primeira vez eu achei que era o diretório local.

    Veja que tem o comentário também:

    :: Localiza o FTP de destino do usuário atual


    Fábio de Paula Junior

    quinta-feira, 20 de junho de 2013 20:54
    Moderador
  • Caro Fabio,

    Solução funcionando.

    Muito Obrigado.


    The mind is the Universe Portal

    quinta-feira, 20 de junho de 2013 22:04