remote-exec-v2
v2.0.0
Published
Execute shell commands on one or more remote computers via SSH
Readme
remote-exec-v2
remote-exec-v2 is a modern Node.js package that allows executing commands over SSH on multiple servers. It enhances automation while being careful with dangerous operations.
Why remote-exec-v2?
Thanks to https://github.com/tpresley/node-remote-exec, which inspired this project. However, that package has not been updated for years and cannot connect to newer OpenSSH servers (v8.8+). remote-exec-v2 is a fresh alternative with updated features.
Runtime
Developed and tested with:
- Node.js v22.11.0
- macOS 15.1
Other platforms are not officially tested yet.
Features
- Execute commands on multiple remote hosts via SSH
- Automatically skips dangerous commands (e.g.,
rm -rf /,shutdown) - Sequential or parallel execution mode
- Force execution of risky commands (optional)
- Supports custom encoding (e.g., GBK for Windows)
- Optional timestamped output and detailed logging
Installation
npm install remote-exec-v2Usage
const remoteExec = require("remote-exec-v2");
const hosts = [
{ host: "192.168.0.101", name: "Server-A", encoding: "gbk" },
{ host: "192.168.0.102", name: "Server-B" }
];
// or hosts in simple way
// const hosts = ["192.168.0.101","192.168.0.12"];
const commands = [
"echo Hello World",
"dir /w",
"rm -rf /important" // this will be skipped unless force: true
];
const options = {
force: false, // Skip risky commands (default)
timestamp: true, // Show timestamps and host names
parallel: false // Run sequentially
};
remoteExec(hosts, commands, options, (err) => {
if (err) {
console.error("Error during execution:", err);
} else {
console.log("Commands executed successfully on all hosts.");
}
});Options
| Option | Type | Default | Description |
| -------------- | ---------------- | ----------------- | ------------------------------------------------ |
| port | number | 22 | SSH port |
| username | string | "root" | SSH username |
| privateKey | string or Buffer | ~/.ssh/id_rsa | Path or buffer of private key |
| encoding | string or null | null | Remote system output encoding (e.g.,"gbk") |
| force | boolean | false | Allow execution of risky commands |
| parallel | boolean | false | Run all hosts in parallel |
| timestamp | boolean | false | Show detailed logs with timestamps and hostnames |
Risky Commands
The following commands are considered risky and will be skipped unless force: true:
rmrmdirdelrimrafrm -rfshutdownrebootmkfsdd if=chmod 777 /chown rootkill -9 -1mv /cp /del /f /s /qformatnetsh advfirewall resetnetsh firewallerase /frd /s /qtaskkill /F /IMreg deletesc stopsc delete
Contributing
Thanks to https://openai.com/ (ChatGPT) for code generation assistance.
If you want to contribute, feel free to fork the repository and create a pull request.
License
MIT License """
