Systemic is a versatile, command execution tool designed to automate the running of commands across multiple remote hosts using SSH. Perfect for DevOps engineers, system administrators, or any power users who need to efficiently manage and monitor large-scale environments.
- Parallel Execution: Run commands simultaneously on multiple hosts.
- Flexible Host Grouping: Define host groups in a configuration file to execute commands on specific sets.
- Error Handling and Retries: Automatically retries commands on failure, ensuring maximum reliability.
- Customizable Output Formats: Supports output in JSON, CSV, or plain text.
- Detailed Reporting: Displays consolidated results in a clean tabular format.
- Seamless SSH Integration: Leverages the power of SSH2 for secure and reliable remote command execution.
- Configuration Driven: Simple JSON files to configure commands and host groups.
-
Clone the Repository:
git clone https://github.com/copyleftdev/systemic.git cd systemic
-
Build the Project:
Make sure you have Rust installed and build the project with:
cargo build --release
-
Configure Environment Variables:
Define the following environment variables:
export SSH_USERNAME=your_username export SSH_PASSWORD=your_password
-
Set Up Configurations:
Create or modify your
config.json
to define your host groups:{ "groups": { "dev": ["host1", "host2"], "prod": ["host3", "host4"], "test": ["host5"] } }
Define the commands to run in
commands.json
:{ "commands": [ "ls -al", "uname -a" ] }
Run Systemic with:
./target/release/syntemic --output-format Json --output-file output.json --group prod --retries 3 --command-file commands.json
--output-format
: Output format (Json, Csv, PlainText)--output-file
: Path to save the output--group
: Host group to target (e.g., "dev", "prod", "test")--retries
: Number of retries on failure--command-file
: JSON file containing the list of commands to execute
Execute the following to run ls -al
and uname -a
on all prod
hosts:
./target/release/syntemic --output-format Csv --output-file results.csv --group prod --retries 2 --command-file commands.json
We welcome contributions! Feel free to open issues or submit pull requests to help make Systemic even better.
Created by @copyleftdev - feel free to reach out!