Test FTP avec Node et JavaScript

Script pour vérifier qu'une connexion FTP est disponible avec un serveur et que l'on peut invoquer des commandes à distances.

FTP check convient dans le cadre d'un projet Node qui requiert l'usage de FTP pour échanger des fichiers entre un poste local et un serveur, sur un hébergement mutualisé ou dédié.

Le script utilise le module jsftp, et fonctionne ne mode asynchrone. En premier lieu, on teste si la connexion est possible avec la commande stat. Elle renvoie une erreur si le serveur est inacessible ou refuse la connexion.

Si la connexion est établie, on essaie une autre commande, la lecture de la date de dernière modification d'un fichier, dont on spécifie le nom et le chemin.

On pourra modifier le script pour tester d'autres commandes, la liste exhaustive des commandes possibles peut être lue dans le fichier jsftp.js.

Le script s'exécute par la commande suivante:

node testftp.js paramètres 

Les paramètres suivants sont requis :

-l   suivi du login
-p   suivi du mot de pass
-f   suivie de l'URL dans le protocole FTP.
nom de fichier avec chemin complet à partir de la racine du dossier public.

Exemple

 node testftp.js -lnom -pxxxxxx -fftp.example.com www/monfichier.html

Code source du script:

var JSFtp = require("jsftp")

function main(argc,argv)
{
    processCommand(argc, argv.slice(1))

    OPTIONS={"host":server,"port":21,"user":user,"pass":pass,"debugMode":true}

    var connection = new JSFtp(OPTIONS);
    console.log("Checking FTP on "+ server)      
    connection.raw.stat(function(err, data) {
        if(err) {
            console.log("Server not available through FTP. Error:" + err)
            return
        }
        console.log("Server OK.")

        console.log("Checking date of " + filename)   

        connection.raw.mdtm(filename, function(err, data) {
            if(err) {
                console.log("Date not returned. Error: " + err)
                return
            }    
            console.log("Date/Time: " + data.text.substr(4))
            console.log("Data returned:")
            console.log(JSON.stringify(data))
            connection.raw.quit(function(err, data) {
                console.log("Bye!")
                process.exit(1)
            })
        })
    })
}    

main(process.argv.length-1,process.argv.slice(1))

Télécharger le script complet:

N'oubliez pas d'installer jsftp avant de lancer le script (npm install jsftp).