Comment automatiser l'envoi d'un fichier à un serveur FTP avec un script?

9

J'ai besoin de créer un script qui prend un fichier journal particulier /var/log/et le place quelque part où je peux facilement l'obtenir (probablement un serveur Web ou FTP auquel j'ai accès). Je ne pense pas que je veux utiliser le courrier pour l'envoyer. Webdav pourrait être une option. Il doit simplement fonctionner sans aucune interaction avec l'utilisateur, et être assez rapide et indolore. Aucune suggestion? (pas de mot de passe nécessaire, en gros)

CaptSaltyJack
la source

Réponses:

12
  • Les fichiers journaux /var/logsont généralement lisibles dans le monde entier et ne nécessitent aucun mot de passe pour y accéder.
  • Si vous avez déjà un serveur FTP - pourrait également être un back-end pour un serveur Web - l'option IMO la plus simple est d'utiliser l' wpututilitaire.
    • Installez-le avec sudo apt-get install wputsi nécessaire.
    • La syntaxe est:
      wput [options] [fichier] ... [url] ...
    • où l'URL est de la forme:
      ftp: // [nom d'utilisateur [: mot de passe] @] nom d'hôte [: port] [/ [chemin /] [fichier]]
  • Exemple:

    wput / var / log / syslog ftp: // jack: [email protected]/www/mylogs/ 
    
  • Utilisez l' -uoption pour forcer un téléchargement lorsque le fichier de destination existe déjà.

  • Voir wput --helpou man wputpour de nombreuses autres options.

Remarque: mettre le mot de passe en texte brut comme dans les exemples ci-dessus est extrêmement peu sûr en général; Je recommande fortement de créer un compte FTP restreint sur le serveur qui autorise uniquement les téléchargements vers un répertoire spécial que vous créez pour télécharger / afficher les journaux.

ish
la source
Salut, Merci beaucoup pour cela, c'est exactement ce dont j'ai besoin, je sais que c'est un vieux fil mais j'ai des problèmes avec les répertoires. Lorsque j'utilise wput sur un serveur distant, il crée toujours une arborescence de répertoires vers la destination des fichiers, est-il possible de copier des fichiers sans créer une arborescence de répertoires entière sur une télécommande?
Aleksandar Đorđević
0

Une autre commande utile et sécurisée que vous pouvez utiliser serait la scpcommande qui utilise ssh pour copier des fichiers en avant et en arrière.

Pour l'utiliser, vous pouvez utiliser Seahorse pour créer une paire de clés SSH et copier la partie publique de la clé dans ~ / .ssh /. Vous ne devez pas protéger le mot de passe que vous utilisez pour cela avec un mot de passe car vous ne voulez pas vous connecter pour l'utiliser. Vous ne devriez probablement utiliser que la paire de mots de passe que vous utilisez pour cela pour ce script. Vous utilisez l'option d'identité scp -i pour le sélectionner.

La clé privée remplace un mot de passe en texte brut.

Je suppose que vous pouvez placer une invocation du script dans votre crontab si vous le souhaitez.

Avec l'approche utile d'izx, vous devez faire attention à protéger l'endroit où vous placez le script pour protéger le mot de passe "salé" de l'ordinateur distant des regards indiscrets. Avec cette approche, vous devrez prendre le même soin de protéger la partie privée de la paire de clés car elle n'est pas protégée par mot de passe.

John S Gruber
la source