跨主机并行执行shell
版本&兼容性
版本支持
兼容性
- [x]
CentOS6 - [x]
CentOS7
使用方式1
参考以下链接进行安装
生成默认配置文件
$ easyctl exec shell
INFO[0000] 生成配置文件样例, 请携带 -c 参数重新执行 -> config.yaml
修改配置文件
config.yaml, 修改主机列表。easyctl根据主机列表ssh远程至目标主机执行shell
server:
- host: 10.10.10.[1:3]
username: root
privateKeyPath: ~/.ssh/id_rsa
password: ""
port: 22
excludes:
- 192.168.235.132
script: "1.sh"
执行
添加--debug可以输出详细内容。
使用方式2
生成默认配置文件
exec 后执行的 shell 指令需用双引号引用
$ easyctl exec "date"
INFO[0000] 未找到配置文件,为您生成配置文件样例, 请修改文件内容后携带 -c 参数重新执行 -> config.yaml
修改配置文件
config.yaml, 修改主机列表。easyctl根据主机列表ssh远程至目标主机执行shell
server:
- host: 10.10.10.[1:3]
username: root
privateKeyPath: ~/.ssh/id_rsa
password: ""
port: 22
excludes:
- 192.168.235.132
执行
添加--debug可以输出详细内容。
$ easyctl exec "date" -c config.yaml --debug
配置项说明
- 主机配置段:该段配置远程执行
shell的主机信息,字段说明如下host: 10.10.10.[1:3]主机地址段,适用于ip连续场景。分隔符可以为[1:3]、1-2、[1-2]、1:2username: 远程主机ssh用户名称,缺省值为rootpassword: 对应username的密码privateKeyPath:ssh私钥路径port:ssh端口,默认22excludes: 排除host地址段内的ip地址列表
privateKeyPath优先级高于password:
privateKeyPath为空,取password值,ssh使用密码登录方式privateKeyPath非空,取privateKeyPath值,ssh使用密钥登录方式
server:
- host: 10.10.10.[1:3]
username: root
privateKeyPath: ~/.ssh/id_rsa
password: ""
port: 22
excludes:
- 192.168.235.132
- 脚本配置:
script: "date": 远程执行的shell指令,适用于运行单个shell指令场景script: "1.sh": 远程执行的shell脚本,适用于运行多个shell指令场景
配置样例
1.主机:
10.10.10.1-10.10.10.10执行date指令,使用密钥登录方式
server:
- host: 10.10.10.[1:10]
username: root
privateKeyPath: ~/.ssh/id_rsa
password: ""
port: 22
excludes:
- 192.168.235.132
script: "date"
2.主机:
10.10.10.1-10.10.10.10执行date指令,使用密码登录方式
server:
- host: 10.10.10.[1:10]
username: root
# privateKeyPath: ~/.ssh/id_rsa
password: "123456"
port: 22
excludes:
- 192.168.235.132
script: "date"
3.主机:
10.10.10.1、10.10.10.3、10.10.10.4执行date指令,使用密码登录方式
server:
- host: 10.10.10.[1:4]
username: root
# privateKeyPath: ~/.ssh/id_rsa
password: "123456"
port: 22
excludes:
- 10.10.10.2
script: "date"
4.主机:
10.10.10.1、10.10.10.3、10.10.10.4执行shell脚本,使用密码登录方式
server:
- host: 10.10.10.[1:4]
username: root
# privateKeyPath: ~/.ssh/id_rsa
password: "123456"
port: 22
excludes:
- 10.10.10.2
script: "/root/modify-sysctl.sh"
/root/modify-sysctl.sh脚本内容如下
#!/bin/bash
sed -i '/vm.dirty_background_ratio/d' /etc/sysctl.conf
sed -i '/vm.dirty_ratio/d' /etc/sysctl.conf
echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
sysctl -p
5.主机:
10.10.10.1、10.10.10.3、10.10.10.4执行shell脚本,使用密码登录方式,且ssh端口及密码均不一致
server:
- host: 10.10.10.1
username: root
# privateKeyPath: ~/.ssh/id_rsa
password: "123456"
port: 22
- host: 10.10.10.3
username: root
# privateKeyPath: ~/.ssh/id_rsa
password: "123"
port: 22122
- host: 10.10.10.4
username: root
# privateKeyPath: ~/.ssh/id_rsa
password: "456"
port: 22222
excludes:
- 10.10.10.2
script: "/root/modify-sysctl.sh"
/root/modify-sysctl.sh脚本内容如下
#!/bin/bash
sed -i '/vm.dirty_background_ratio/d' /etc/sysctl.conf
sed -i '/vm.dirty_ratio/d' /etc/sysctl.conf
echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
sysctl -p