#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