import { NodeSSH } from 'node-ssh'; // Обратите внимание на .js в конце. Это обязательно для ESM! import { config } from './config.js'; import type { ServerSettings } from './config.js'; const ssh = new NodeSSH(); async function processServer(server: ServerSettings) { console.log(`\n>>> Начинаю работу с сервером: ${server.host}:${server.port}`); try { await ssh.connect({ host: server.host, port: server.port, username: server.username, password: server.password }); console.log(`[${server.host}] Соединение установлено.`); const commands = [ 'sudo apt-get update', 'sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y' ]; for (const cmd of commands) { console.log(`[${server.host}] Выполняю: ${cmd}`); await ssh.execCommand(cmd, { onStdout(chunk) { process.stdout.write(chunk.toString()); }, onStderr(chunk) { process.stderr.write(chunk.toString()); } }); } console.log(`[${server.host}] ✅ Готово.`); } catch (error: any) { console.error(`[${server.host}] ❌ Ошибка: ${error.message}`); } finally { ssh.dispose(); } } async function run() { for (const server of config) { await processServer(server); } } run();