Wie automatisiere ich das Senden einer Datei an einen FTP-Server mit einem Skript?

9

Ich muss ein Skript erstellen, das eine bestimmte Protokolldatei aufnimmt und an einem Ort /var/log/ablegt, an dem ich sie leicht abrufen kann (höchstwahrscheinlich einen Web- oder FTP-Server, auf den ich Zugriff habe). Ich glaube nicht, dass ich Mail zum Senden verwenden möchte. Webdav könnte eine Option sein. Es muss nur ohne Benutzerinteraktion funktionieren und ziemlich schnell und schmerzlos sein. Irgendwelche Vorschläge? (Grundsätzlich wird kein Passwort benötigt)

CaptSaltyJack
quelle

Antworten:

12
  • Anmeldedateien /var/logsind normalerweise weltweit lesbar und erfordern kein Kennwort für den Zugriff.
  • Wenn Sie bereits einen FTP-Server haben - könnte auch ein Back-End für einen Webserver sein - besteht die einfachste Option IMO darin, das wputDienstprogramm zu verwenden.
    • Installieren Sie es bei sudo apt-get install wputBedarf mit.
    • Die Syntax lautet:
      wput [Optionen] [Datei] ... [URL] ...
    • wo die URL die Form hat:
      ftp: // [Benutzername [: Passwort] @] Hostname [: Port] [/ [Pfad /] [Datei]]
  • Beispiel:

    wput / var / log / syslog ftp: // jack: [email protected]/www/mylogs/ 
    
  • Verwenden Sie die -uOption, um einen Upload zu erzwingen, wenn die Zieldatei bereits vorhanden ist.

  • Siehe wput --helpoder man wputfür viele weitere Optionen.

Hinweis: Das Einfügen des Kennworts in Klartext wie in den obigen Beispielen ist im Allgemeinen äußerst unsicher. Ich empfehle dringend, ein eingeschränktes FTP-Konto auf dem Server zu erstellen, das nur das Hochladen in ein spezielles Verzeichnis ermöglicht, das Sie zum Herunterladen / Anzeigen der Protokolle erstellen.

ish
quelle
Hallo, vielen Dank dafür, das ist genau das, was ich brauche. Ich weiß, dass es ein alter Thread ist, aber ich habe Probleme mit Verzeichnissen. Wenn ich wput auf einem Remote-Server verwende, wird immer ein Verzeichnisbaum zum Dateiziel erstellt. Ist es möglich, nur Dateien zu kopieren, ohne einen vollständigen Verzeichnisbaum auf dem Remote-Server zu erstellen?
Aleksandar Đorđević
0

Ein weiterer nützlicher und sicherer Befehl, den Sie verwenden können, ist der scpBefehl, der ssh zum Kopieren von Dateien hin und her verwendet.

Um dies zu verwenden, können Sie mit Seahorse ein SSH-Schlüsselpaar erstellen und den öffentlichen Teil des Schlüssels nach ~ / .ssh / kopieren. Sie sollten das dafür verwendete Passwort nicht mit einem Passwort schützen, da Sie sich nicht anmelden möchten, um es zu verwenden. Sie sollten wahrscheinlich nur das Kennwortpaar verwenden, das Sie für dieses Skript verwenden. Sie verwenden die Identitätsoption scp -i, um sie auszuwählen.

Der private Schlüssel ersetzt ein Klartextkennwort.

Ich gehe davon aus, dass Sie auf Wunsch einen Aufruf des Skripts in Ihre Crontab einfügen können.

Mit dem hilfreichen Ansatz von izx müssen Sie vorsichtig sein, um zu schützen, wo Sie das Skript platzieren, um das Kennwort "salzig" für den Remotecomputer vor neugierigen Blicken zu schützen. Bei diesem Ansatz müssen Sie den privaten Teil des Schlüsselpaars mit der gleichen Sorgfalt schützen, da er nicht durch ein Passwort geschützt ist.

John S. Gruber
quelle