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

9

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

CaptSaltyJack
fonte

Respostas:

12
  • Os arquivos de log /var/loggeralmente são legíveis pelo mundo e não requerem senha para acessar.
  • Se você já possui um servidor FTP - também pode ser um back-end para um servidor Web - a opção mais simples da IMO é usar o wpututilitário.
    • Instale-o sudo apt-get install wputse necessário.
    • A sintaxe é:
      wput [opções] [arquivo] ... [url] ...
    • onde o URL está no formato:
      ftp: // [nome do usuário [: senha] @] nome do host [: porta] [/ [caminho /] [arquivo]]
  • Exemplo:

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

  • Veja wput --helpou man wputpara muitas outras opções.

Nota: Colocar a senha em texto sem formatação, como nos exemplos acima, é extremamente insegura em geral; Eu recomendo fortemente a criação de uma conta FTP restrita no servidor que permita apenas uploads para um diretório especial que você criar para baixar / visualizar os logs.

ish
fonte
Oi, Muito obrigado por isso, é exatamente isso que eu preciso, eu sei que é um thread antigo, mas estou tendo problemas com diretórios. Quando uso o wput no servidor remoto, ele sempre cria uma árvore de diretórios para o destino do arquivo. É possível copiar arquivos sem criar toda a árvore de diretórios no controle remoto?
Aleksandar Đorđević 11/08
0

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

Para usar isso, você pode usar o cavalo-marinho para criar um par de chaves ssh e copiar a parte pública da chave para ~ / .ssh /. Você não deve proteger a senha usada 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 este script. Você usa a opção scp -i identity para selecioná-lo.

A chave privada substitui uma senha de texto sem formatação.

Suponho que você possa colocar uma invocação do script em seu crontab, se desejar.

Com a abordagem útil da izx, você precisa ter cuidado para proteger onde coloca o script para proteger a senha "salgada" do computador remoto contra olhares indiscretos. Com essa abordagem, você precisará tomar o mesmo cuidado para proteger a parte privada do par de chaves, pois ela não é protegida por senha.

John S Gruber
fonte