Как получить абсолютный путь к файлу на SFTP-сервере

#javascript #node.js #sftp

#javascript #node.js #sftp

Вопрос:

Я написал код, который передает файл с моего локального компьютера на SFTP-сервер, используя пакет npm ssh2-sftp-client. Я также проверяю хэш md5 файла перед отправкой файла и после отправки файла, чтобы убедиться, что передается правильный файл. Чтобы получить хэш md5 файла, я использую контрольную сумму пакета npm. Перед отправкой файла я получаю правильный хэш файла, но после отправки файла я не могу получить хэш файла, поскольку у меня нет его абсолютного пути. Это мой код:

 let Client = require("ssh2-sftp-client");
let client = new Client();
const fs = require("fs");
const checksum = require("checksum");

const sftpTransfer = () => {
  let localPath = "path-to-local-file/filename.ext";
  let data = fs.createReadStream(localPath);
  let remote = "relative-path-in-sftp-server/filename.ext";

  const config = {
    host: "IP of sftp server",
    port: "22",
    username: "username",
    password: "password",
    privateKey: fs.readFileSync("path-of-key-in-local-macchine/keyname.ppk"),
  };
  checksum.file("path-to-local-file/filename.ext", function (err, sum) {
    console.log(sum); //sum has the md5 hash of file
  });

  client
    .connect(config)
    .then(() => {
      return client.put(data, remote);
    }).then(() => {
       checksum.file("relative-path-in-sftp-server/filename.ext", function (err, sum) {
           console.log(sum); //sum has the md5 hash of file
       });
      console.log("Data Successfully Transferred!!");
      return client.end();
    })
    .catch(err => {
      return err.message;
    });
};


sftpTransfer();

  

Используя relative-path-in-sftp-server/filename.ext я могу передавать данные, и я проверил это из filezilla, но мне нужен абсолютный путь к файлу, чтобы вычислить его хэш md5.

Комментарии:

1. Однако вам потребуется указать md5 для удаленного файла. Поэтому либо используйте сервер / клиент, который поддерживает расширение md5-hash sftp, либо извлеките файл снова, чтобы проверить его.

2. или ssh и запустить md5sum