web-dev-qa-db-fra.com

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

Je dois créer un script qui prend un fichier journal particulier dans /var/log/ et le place à un endroit 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 de l'utilisateur, et être assez rapide et sans douleur. Aucune suggestion? (pas besoin de mot de passe, fondamentalement)

9
CaptSaltyJack
  • Les fichiers journaux de /var/log sont généralement lisibles par tout le monde et ne nécessitent aucun mot de passe pour y accéder.
  • Si vous avez déjà un serveur FTP, l’option la plus simple, IMO, consiste à utiliser l’utilitaire wput.
    • Installez-le avec Sudo apt-get install wput si nécessaire.
    • La syntaxe est la suivante:
      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'option -u pour forcer le téléchargement lorsque le fichier de destination existe déjà.

  • Voir wput --help ou man wput pour de nombreuses autres options.

Note: Mettre le mot de passe en texte clair comme dans les exemples ci-dessus est extrêmement peu sécurisé 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 créé pour le téléchargement/l'affichage des journaux.

12
ish

Une autre commande utile et sécurisée que vous pouvez utiliser serait la commande scp qui utilise ssh pour copier des fichiers.

Pour utiliser cela, vous pouvez utiliser seahorse pour créer une paire de clés ssh et copier la partie publique de la clé vers ~/.ssh /. Vous ne devez pas protéger le mot de passe que vous utilisez pour cela avec un mot de passe, car vous ne souhaitez 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 veiller à 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 pour protéger la partie privée de la paire de clés car elle n'est pas protégée par mot de passe.

0
John S Gruber