Aller au contenu

Module Lua ftp

Le module ftp permet de transférer des fichiers via les protocoles FTP ou SFTP.

Import

Pour importer le module :

local ftp = require("ftp1")

Configuration YAML

Le module ftp nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.

iot:
  modules:
    ftp:
      - name: ftp1                  # nom unique de l'instance
        protocol: sftp              # "ftp" ou "sftp"
        host: files.example.com     # hôte du serveur
        port: 22                    # port (21 pour FTP, 22 pour SFTP)
        user: deploy                # utilisateur
        password: hunter2           # mot de passe (pour auth par mot de passe)
        # key_file: /path/id_rsa    # chemin de la clé privée (pour SFTP key auth)
        timeout_ms: 5000            # timeout de connexion en ms (défaut : 5000)

Détails de la configuration

  • name (string, requis) : Nom unique de l'instance.
  • protocol (string) : Protocole à utiliser. Valeurs possibles : "ftp" ou "sftp".
  • host (string, requis) : Nom DNS ou adresse IP du serveur.
  • port (integer) : Port TCP (21 pour FTP, 22 pour SFTP).
  • user (string, requis) : Login utilisateur.
  • password (string) : Mot de passe (si pas d'authentification par clé).
  • key_file (string) : Chemin vers la clé privée SSH (pour SFTP avec authentification par clé).
  • timeout_ms (integer) : Délai de timeout de connexion en millisecondes (défaut : 5000).

API Lua

Liste des fonctions

Fonction Signature Lua Rôle Retour (succès) Retour (échec)
get bool, err = ftp.get(remotePath, localPath) Télécharge un fichier distant. true, nil nil, "msg"
put bool, err = ftp.put(localPath, remotePath) Envoie un fichier vers le serveur. true, nil nil, "msg"
Champs ftp.name, ftp.type Métadonnées du module.

ftp.get(remotePath, localPath)

Télécharge un fichier depuis le serveur distant vers le système local.

  • Paramètres :
  • remotePath (string) : Chemin du fichier sur le serveur distant.
  • localPath (string) : Chemin local de destination.

  • Retour :

  • En cas de succès : true, nil.
  • En cas d'erreur : nil, message d'erreur.
local ftp = require("ftp1")

local ok, err = ftp.get("/remote/data.txt", "/tmp/data.txt")
if not ok then
    print("Échec du téléchargement : " .. err)
else
    print("Fichier téléchargé avec succès.")
end

ftp.put(localPath, remotePath)

Envoie un fichier local vers le serveur distant.

  • Paramètres :
  • localPath (string) : Chemin du fichier local à envoyer.
  • remotePath (string) : Chemin de destination sur le serveur distant.

  • Retour :

  • En cas de succès : true, nil.
  • En cas d'erreur : nil, message d'erreur.
local ftp = require("ftp1")

local ok, err = ftp.put("/tmp/config.yml", "/remote/config.yml")
if not ok then
    print("Échec de l'envoi : " .. err)
else
    print("Fichier envoyé avec succès.")
end

Exemple complet

local ftp = require("ftp1")

-- Télécharger un fichier de configuration
local ok, err = ftp.get("/config/settings.json", "/tmp/settings.json")
if not ok then
    print("Erreur téléchargement : " .. err)
    return
end

-- Modifier le fichier localement...

-- Renvoyer le fichier modifié
local ok2, err2 = ftp.put("/tmp/settings.json", "/config/settings.json")
if not ok2 then
    print("Erreur envoi : " .. err2)
end

Champs Lua associés

  • ftp.name : Retourne le nom de l'instance du module.
  • ftp.type : Retourne le type du module ("ftp").