Como eu automatizo o envio de um arquivo para um servidor FTP com um script?

9

Eu preciso fazer um script que pegue um arquivo de log específico em /var/log/ e o coloque em algum lugar onde eu possa obtê-lo facilmente (provavelmente um servidor web ou FTP que eu tenho acesso). Eu não acho que eu quero usar o email para enviá-lo. O Webdav pode ser uma opção. Ele só precisa funcionar sem qualquer interação do usuário e ser bem rápido e indolor. Alguma sugestão? (sem senha necessária, basicamente)

    
por CaptSaltyJack 09.08.2012 / 23:06

2 respostas

12
  • Os arquivos de log em /var/log costumam ser legíveis e não exigem senha para acesso.
  • Se você já tem um servidor FTP - pode ser um back-end para um servidor da web também - a opção mais simples é usar o utilitário wput .
    • Instale-o com sudo apt-get install wput , se necessário.
    • A sintaxe é:
      wput [options] [file]... [url]...
    • onde o URL está no formulário:
      ftp://[username[:password]@]hostname[:port][/[path/][file]]
  • Exemplo:

    wput /var/log/syslog ftp://jack:[email protected]/www/mylogs/ 
    
  • Use a opção -u para forçar um upload quando o arquivo de destino já existir.

  • Veja wput --help ou man wput para muitas outras opções.
  

Nota: Colocar a senha em texto simples como nos exemplos acima é extremamente inseguro em geral; Eu recomendo strongmente a criação de uma conta FTP restrita no servidor, que permite somente uploads para um diretório especial que você cria para baixar / visualizar os registros.

    
por ish 09.08.2012 / 23:49
0

Outro comando útil e seguro que você pode usar seria o comando scp , que usa o ssh para copiar arquivos para lá e para cá.

Para usar isso, você pode usar cavalos-marinhos para criar um par de chaves ssh e copiar a parte pública da chave para ~ / .ssh /. Você não deve proteger a senha que usa para isso com uma senha, pois não deseja fazer login para usá-la. Você provavelmente deve usar apenas o par de senhas usado para esse script. Você usa a opção scp -i identity para selecioná-lo.

A chave privada substitui uma senha de texto simples.

Eu suponho que você poderia colocar uma invocação do script no seu crontab, se desejar.

Com a abordagem útil do izx, você precisa ter cuidado para proteger onde colocar o script para proteger a senha "salgada" para o computador remoto de olhares indiscretos. Com essa abordagem, você terá que ter o mesmo cuidado para proteger a parte privada do par de chaves, uma vez que não é protegido por senha.

    
por John S Gruber 10.08.2012 / 05:55