Usando o PSFTP para enviar o arquivo para o servidor remoto

0

Eu tenho um arquivo bat que eu chamo everynight para transferir alguns arquivos.

Eu quero colocar um arquivo do meu computador no meu servidor remoto. Eu instalei o PSFTP e não sei como usá-lo em lote.

Eu coloco isso:

CD /D C:\Users\Vincent\Desktop
psftp [email protected] -pw password -P port
put file.csv /remote/folder/file.csv

Mas quando eu ligo para o meu arquivo BAT, ele liga:

psftp > _

Como posso usá-lo como modo de automação?

    
por Vincent Decaux 05.09.2016 / 14:16

1 resposta

0

Antes de mais nada, vamos diagnosticar por que isso não funciona.

  1. O arquivo em lote é iniciado. Provavelmente em C: \ users \ vincent \
  2. O diretório de trabalho é alterado pelo primeiro comando. este comando termina e o processamento passa para o próximo comando.
  3. psftp [email protected] -pw password -P port é iniciado. Está em execução e aguardando a entrada do usuário.
  4. O próximo comando não é alcançado até que o anterior termine. Se você é um leitor rápido, pode digitar quit e ver a mensagem de erro que put is not a recognised internal or external command antes do fechamento da janela.

Ok, agora descobrimos que estamos emitindo um terceiro comando em vez de inserir o psftp. A questão agora é como você pode emitir ordens para o programa psftp em execução.

Capítulo 6 , seção 6.1.5 de psftp, significando o -b opção. Citando isso:

Na operação normal, o PSFTP é um programa interativo que exibe uma linha de comando e aceita comandos do teclado. Se você precisar realizar tarefas automatizadas com PSFTP, provavelmente preferiria especificar um conjunto de comandos com antecedência e executá-los automaticamente. A opção -b permite que você faça isso. Você o usa com um nome de arquivo contendo comandos em lote. Por exemplo, você pode criar um arquivo chamado myscript.scr contendo linhas como esta:

Em seguida, lista um exemplo. No seu caso, o arquivo provavelmente deve conter isto:

put file.csv /remote/folder/file.csv
quit
    
por 05.09.2016 / 14:40