Files
backupService/test-scp.js
sebseb7 48f1fae32e x
2025-09-16 09:02:58 +02:00

73 lines
2.0 KiB
JavaScript

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