Files

47 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

2026-05-31 18:45:31 +08:00
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();