Тест FTP с Node и JavaScript

Сценарий для проверки доступности FTP-соединения с сервером и возможности вызова удаленных команд.

Проверка FTP подходит для проекта Node, который требует использования FTP для обмена файлами между локальным компьютером и сервером, на взаимном или выделенном хостинге.

Сценарий использует модуль jsftp и не работает в асинхронном режиме. Во-первых, проверяется возможность подключения к команде stat. Она возвращает ошибку, если сервер не может выполнить подключение или отклоняет его.

Если соединение установлено, пробуется другая команда, считывается дата последнего изменения файла, имя и путь к которому указывается.

Сценарий можно будет редактировать для тестирования других команд, исчерпывающий список возможных команд можно прочитать в файле jsftp.js.

Сценарий выполняется следующей командой:

node testftp.js paramètres 

Необходимы следующие параметры:

-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.

Пример

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

Исходный код сценария:

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))

Загрузить полный сценарий:

Перед запуском сценария (npm install jsftp) не забудьте установить jsftp.