u
This commit is contained in:
3
index.js
3
index.js
@@ -4,6 +4,7 @@ const sql = require('mssql');
|
|||||||
const { S3Client, PutObjectCommand, ListObjectsV2Command } = require('@aws-sdk/client-s3');
|
const { S3Client, PutObjectCommand, ListObjectsV2Command } = require('@aws-sdk/client-s3');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
const os = require('os');
|
||||||
const zlib = require('zlib');
|
const zlib = require('zlib');
|
||||||
const { pipeline } = require('stream/promises');
|
const { pipeline } = require('stream/promises');
|
||||||
const SambaClient = require('samba-client');
|
const SambaClient = require('samba-client');
|
||||||
@@ -42,7 +43,7 @@ const scpConfig = {
|
|||||||
host: process.env.SCP_HOST,
|
host: process.env.SCP_HOST,
|
||||||
port: parseInt(process.env.SCP_PORT) || 22,
|
port: parseInt(process.env.SCP_PORT) || 22,
|
||||||
username: process.env.SCP_USERNAME,
|
username: process.env.SCP_USERNAME,
|
||||||
privateKey: fs.readFileSync(require('path').resolve(process.env.SCP_KEY_PATH))
|
privateKey: fs.readFileSync(path.resolve(process.env.SCP_KEY_PATH.replace(/^~/, os.homedir())))
|
||||||
};
|
};
|
||||||
|
|
||||||
// Legacy SMB Configuration (deprecated)
|
// Legacy SMB Configuration (deprecated)
|
||||||
|
|||||||
72
test-scp.js
72
test-scp.js
@@ -1,72 +0,0 @@
|
|||||||
require('dotenv').config();
|
|
||||||
const { Client } = require('ssh2');
|
|
||||||
|
|
||||||
// Test SCP connection
|
|
||||||
async function testSCPConnection() {
|
|
||||||
const config = {
|
|
||||||
host: process.env.SCP_HOST,
|
|
||||||
port: parseInt(process.env.SCP_PORT) || 22,
|
|
||||||
username: process.env.SCP_USERNAME,
|
|
||||||
privateKey: require('fs').readFileSync(require('path').resolve(process.env.SCP_KEY_PATH))
|
|
||||||
};
|
|
||||||
|
|
||||||
console.log('Testing SCP connection...');
|
|
||||||
console.log(`Host: ${config.host}`);
|
|
||||||
console.log(`Port: ${config.port}`);
|
|
||||||
console.log(`Username: ${config.username}`);
|
|
||||||
|
|
||||||
const conn = new Client();
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
conn.on('ready', () => {
|
|
||||||
console.log('✅ SSH connection successful!');
|
|
||||||
console.log('Now testing SCP download...');
|
|
||||||
|
|
||||||
conn.sftp((err, sftp) => {
|
|
||||||
if (err) {
|
|
||||||
console.error('❌ SFTP error:', err.message);
|
|
||||||
conn.end();
|
|
||||||
reject(err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const remotePath = process.env.SCP_REMOTE_PATH || '/sharemnt/ez.bak';
|
|
||||||
console.log(`Checking remote file: ${remotePath}`);
|
|
||||||
|
|
||||||
sftp.stat(remotePath, (err, stats) => {
|
|
||||||
if (err) {
|
|
||||||
console.error('❌ Cannot access remote file:', err.message);
|
|
||||||
conn.end();
|
|
||||||
reject(err);
|
|
||||||
} else {
|
|
||||||
console.log('✅ Remote file found!');
|
|
||||||
console.log(`File size: ${(stats.size / 1024 / 1024).toFixed(2)} MB`);
|
|
||||||
console.log(`Modified: ${stats.mtime}`);
|
|
||||||
conn.end();
|
|
||||||
resolve();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
conn.on('error', (err) => {
|
|
||||||
console.error('❌ SSH connection failed:', err.message);
|
|
||||||
console.error('Error details:', err);
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
|
|
||||||
conn.connect(config);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run test
|
|
||||||
testSCPConnection()
|
|
||||||
.then(() => {
|
|
||||||
console.log('\n🎉 SCP test completed successfully!');
|
|
||||||
console.log('You can now use: node backup.js');
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.error('\n💥 SCP test failed!');
|
|
||||||
console.error('Please check your SSH configuration.');
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user