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