html 远程linux压缩文件夹并发送到win
利用的ssh2以及ssh2-sftp-client 两个库完成,因为没有两个库的函数都是并行的,要添加async限制成同步
//下载数据 function send_zip(linux_file_path, zip_name, resolve, reject) { console.log("****************send_zip**************8"); var Client_11 = require('ssh2-sftp-client'); var sftp = new Client_11(); var linux_send_path = linux_file_path + '/data.zip'; sftp.connect(key).then(() => { // 下载文件 console.log("linux_send_path: " + linux_send_path); console.log("开始发送"); var win_path = win_path_root + "/" + zip_name + ".zip"; console.log("win_path: " + win_path); return sftp.fastGet(linux_send_path, win_path); }).then(() => { return sftp.delete(linux_send_path); }).then((data) => { console.log("down下载完成"); console.log('send completed successfully.'); resolve(); sftp.end(); }).catch((err) => { console.log(err, 'catch error'); }) } function make_zip(linux_file_path, zip_target, resolve, reject) { console.log("****************make_zip**************8"); var Client_11 = require('ssh2').Client; var conn_6 = new Client_11(); conn_6.on('ready', async function () { console.log("开始压缩"); var exe_send = program_path + 'sh/make_zip.sh ' + linux_file_path + " " + zip_target; conn_6.exec(exe_send, function (err, stream) { if (err) throw err; stream.on('close', function (code, signal) { console.log("压缩完成跳出"); conn_6.end(); if (code === 0) { console.log('zip completed successfully.'); // Success! Resolve. resolve(); } else { // Something went wrong, reject promise! reject(); } }).on('data', function (data) { console.log('STDOUT: ' + data); }).stderr.on('data', function (data) { console.log('STDERR: ' + data); }); }) }).connect(key); } //exec需要监听是否跳出 async库应该可以写的更简介? function make_zip_awaitFunction(linux_file_path, zip_target) { return new Promise((resolve, reject) => { make_zip(linux_file_path, zip_target, resolve, reject); }); } function send_zip_awaitFunction(linux_file_path, zip_name) { return new Promise((resolve, reject) => { send_zip(linux_file_path, zip_name, resolve, reject); }); } //linux压缩路径,传到win下文件名字,linux压缩文件夹 async function download_data(linux_file_path, zip_name, zip_target) { await make_zip_awaitFunction(linux_file_path, zip_target) await send_zip_awaitFunction(linux_file_path, zip_name) }

浙公网安备 33010602011771号