¿Cómo automatizo el envío de un archivo a un servidor FTP con un script?

9

Necesito hacer un script que tome un archivo de registro particular /var/log/y lo coloque en algún lugar donde pueda obtenerlo fácilmente (lo más probable es que sea un servidor web o FTP al que tengo acceso). No creo que quiera usar el correo para enviarlo. Webdav podría ser una opción. Solo necesita funcionar sin ninguna interacción del usuario, y ser bastante rápido e indoloro. ¿Alguna sugerencia? (no se necesita contraseña, básicamente)

CaptSaltyJack
fuente

Respuestas:

12
  • Los archivos de inicio de sesión /var/logsuelen ser legibles en todo el mundo y no requieren contraseña para acceder.
  • Si ya tiene un servidor FTP, también podría ser un back-end para un servidor web, la opción más simple de IMO es usar la wpututilidad.
    • Instálelo con sudo apt-get install wputsi es necesario.
    • La sintaxis es:
      wput [opciones] [archivo] ... [url] ...
    • donde la URL tiene la forma:
      ftp: // [nombre de usuario [: contraseña] @] nombre de host [: puerto] [/ [ruta /] [archivo]]
  • Ejemplo:

    wput / var / log / syslog ftp: // jack: [email protected]/www/mylogs/ 
    
  • Use la -uopción para forzar una carga cuando el archivo de destino ya existe.

  • Ver wput --helpo man wputpara muchas más opciones.

Nota: Poner la contraseña en texto plano como en los ejemplos anteriores es extremadamente inseguro en general; Recomiendo crear una cuenta FTP restringida en el servidor que solo permita cargas a un directorio especial que cree para descargar / ver los registros.

ish
fuente
Hola, muchas gracias por esto, esto es exactamente lo que necesito, sé que es un hilo viejo pero estoy teniendo problemas con los directorios. Cuando uso wput en un servidor remoto, siempre crea un árbol de directorios para el destino del archivo, ¿es posible copiar archivos sin crear un árbol de directorios completo en el control remoto?
Aleksandar Đorđević
0

Otro comando útil y seguro que puede usar sería el scpcomando que usa ssh para copiar archivos de aquí para allá.

Para usar esto, puede usar seahorse para crear un par de claves ssh y copiar la parte pública de la clave a ~ / .ssh /. No debe proteger la contraseña que usa para esto con una contraseña ya que no desea iniciar sesión para usarla. Probablemente solo debería usar el par de contraseñas que usa para esto para este script. Utiliza la opción de identidad scp -i para seleccionarla.

La clave privada reemplaza a una contraseña de texto sin formato.

Supongo que podría colocar una invocación del script en su crontab si lo desea.

Con el enfoque útil de izx, debe tener cuidado de proteger el lugar donde coloca el script para proteger la contraseña "salada" de la computadora remota de miradas indiscretas. Con este enfoque, tendrá que tener el mismo cuidado para proteger la parte privada del par de claves, ya que no está protegido con contraseña.

John S Gruber
fuente