Problemas que automatizam o sftp com expectativa

1

Estou tentando automatizar a transferência de dados usando o sftp.

Eu tenho um script hacky que captura o arquivo de dados. Infelizmente, no meio da transferência, o arquivo é inesperadamente truncado. Quando tentei fazer o mesmo comando manualmente, ele sempre transfere o arquivo inteiro.

A primeira linha do meu script espera é:

spawn  sftp -o ConnectTimeout=120 username@boxAddress

Fiquei com a impressão de que colocar "-o ConnectTimeout = 120" impediria o tempo limite da conexão se ela parasse por menos de dois minutos.

O que devo fazer para que o script faça o download do arquivo inteiro?

Outra pergunta muito menos importante: Eu preferiria autenticar usando chaves (mas isso não é essencial, pois estou apenas pegando dados do servidor externo). Eu não acho que eu poderia colocar uma chave neste servidor externo (porque não está sob meu controle), mas (quando eu usei o FileZilla para me conectar a ele) notei que o FileZilla aceitou uma chave dele. Como eu poderia configurar meu script para pedir e usar essa chave?

    
por Dan S 14.02.2012 / 16:47

1 resposta

0

Você não precisa de um script expect apenas para pegar alguns arquivos por SFTP; o mesmo pode ser feito a partir da linha de comando:

sftp username@boxAddress:/path/to/datafile

buscará datafile no diretório atual.

Para responder à segunda pergunta (que deveria ter sido publicada separadamente ), você está confundindo dois tipos diferentes de chaves.

  • Quando o FileZilla ou sftp aceitam uma chave do servidor, é a chave " host ", usada para verificar o < em> identidade do servidor .
  • Quando você usa uma chave para autenticação, é a chave de autenticação usuário , usada para verificar a sua identidade
  • .

Normalmente, você não precisa de qualquer controle adicional sobre o servidor para habilitar o último; basta anexar sua chave pública a ~/.ssh/authorized_keys . Isso pode ser feito de qualquer maneira, incluindo SFTP get e put .

    
por 14.02.2012 / 16:59