multi-ssh/README.md

89 lines
2.3 KiB
Markdown
Raw Normal View History

2024-12-13 13:22:49 +01:00
# multi-ssh
2024-12-15 14:34:19 +01:00
An application to upload or edit a file or perform a command on multiple servers via ssh and scp.
2024-12-13 13:22:49 +01:00
## Configuration
Set the environment variable `MSSH_SERVERS` to configure the server directories of your ssh servers.
2024-12-15 14:34:19 +01:00
Use the `MSSH_EDITOR` variable to configure your editor command.
Furthermore, ensure that in your shell the following commands are set up and working:
- ssh
- scp
- ssh-agent
- ssh-add
Ergo you should be able to connect to your desired servers via ssh and be able to start an ssh agent.
2024-12-13 13:22:49 +01:00
2024-12-15 14:34:19 +01:00
### Environment variable setup example for linux
2024-12-13 13:22:49 +01:00
```bash
2025-02-02 02:23:25 +01:00
export MSSH_SERVERS="crea:server/creative2,sky:sky,city:city2,.:minecraft-server"
2024-12-15 14:34:19 +01:00
export MSSH_EDITOR="kate -b <file>" #<file> is the placeholder for the file name
2024-12-13 13:22:49 +01:00
```
2025-02-02 02:23:25 +01:00
### localhost as server-target
You may also use `.` to refer to your local minecraft server, without having to open the ssh port. You still have to
define the server directory though.
2024-12-13 13:22:49 +01:00
## Usage
For detailed usage please see:
```bash
multi-ssh --help
```
### Command example
Delete the WorldGuard folder on crea, sky and city:
```bash
multi-ssh crea sky city -c "rm -r plugins/WorldGuard"
```
### Upload example
Upload a new version of the MenuApi plugin and delete old versions from the servers:
```bash
multi-ssh crea sky city minez lobby -u target/MenuApi-3.4.2.jar
```
2025-02-02 14:23:57 +01:00
Upload a new version of the MineZ plugin from the MineZ-Dev and keep backups of the older versions:
2024-12-13 13:22:49 +01:00
```bash
2025-02-02 14:23:57 +01:00
multi-ssh minez -u -S minez-dev plugins/MineZ-3.0.jar -a
2024-12-13 13:22:49 +01:00
```
The program will show you an overview of what it will be doing before actually performing any of the actions:
```
2025-02-02 14:23:57 +01:00
minez (minez3/plugins):
2024-12-13 13:22:49 +01:00
* renaming MineZ-2.7.jar -> MineZ-2.7.jarr
+ adding MineZ-3.0.jar
Continue [Y|n]:
```
For detailed usage of the upload feature see
```bash
multi-ssh -u --help
```
2024-12-15 14:34:19 +01:00
### Editor example
Edit the server properties of steptech
```bash
multi-ssh steptech -e server.properties
```
This will create a copy of the file in your `~/Downloads` directory. That directory can be changed using the `-d` flag.
2024-12-15 14:34:19 +01:00
## Building from source
2024-12-14 17:59:05 +01:00
This is a rust project so you will need [rust and cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html).
Once you have that installed, just run
```bash
cargo build --release
```
and you will find an executable in `target/release`.
### Unit tests
2025-02-02 02:23:25 +01:00
In order for the unit tests to pass, you will need `python3`.