跨主机切用户并行执行shell

适用场景说明:

适用于目标主机不支持root直接登录场景,通过easyctl二次切换用户执行指令

版本&兼容性

版本支持

兼容性

  • [x] CentOS6
  • [x] CentOS7

使用方式

参考以下链接进行安装

生成默认配置文件

$ easyctl exec su-shell
INFO[0000] 生成配置文件样例, 请携带 -c 参数重新执行 -> config.yaml

修改配置文件

config.yaml, 修改主机列表。easyctl根据主机列表ssh远程至目标主机, 切换root执行shell

  • usernamepassword为普通用户登录账号及口令
  • rootPassword: root账号口令
server:
  - host: 10.10.10.[1:3]
    username: xxx
    # privateKeyPath: ~/.ssh/id_rsa
    password: ""
    rootPassword: ""
    port: 22
excludes:
  - 192.168.235.132

执行

添加--debug可以输出详细内容。

$ easyctl exec su-shell -c config.yaml --debug

配置项说明

  • 主机配置段:该段配置远程执行shell的主机信息,字段说明如下
    • host: 10.10.10.[1:3] 主机地址段,适用于ip连续场景。分隔符可以为[1:3]1-2[1-2]1:2
    • username: 远程主机ssh普通用户名称
    • password: 对应username的密码
    • rootPassword: root账号口令
    • privateKeyPath: ssh私钥路径
    • port: ssh端口,默认22
    • excludes: 排除host地址段内的ip地址列表

privateKeyPath优先级高于password:

  1. privateKeyPath为空,取password值,ssh使用密码登录方式
  2. privateKeyPath非空,取privateKeyPath值,ssh使用密钥登录方式
server:
  - host: 10.10.10.[1:3]
    username: apache
    privateKeyPath: ~/.ssh/id_rsa
    password: ""
    rootPassword: ""
    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: apache
    privateKeyPath: ~/.ssh/id_rsa
    password: ""
    rootPassword: ""
    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: apache
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    rootPassword: ""
    port: 22
excludes:
  - 192.168.235.132
script: "date"

3.主机: 10.10.10.110.10.10.310.10.10.4执行date指令,使用密码登录方式

server:
  - host: 10.10.10.[1:4]
    username: apache
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    rootPassword: ""
    port: 22
excludes:
  - 10.10.10.2
script: "date"

4.主机: 10.10.10.110.10.10.310.10.10.4执行shell脚本,使用密码登录方式

server:
  - host: 10.10.10.[1:4]
    username: apache
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    rootPassword: ""
    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.110.10.10.310.10.10.4执行shell脚本,使用密码登录方式,且ssh端口及密码均不一致

server:
  - host: 10.10.10.1
    username: apache
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    rootPassword: "123"
    port: 22
  - host: 10.10.10.3
    username: apache
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123"
    rootPassword: "123"
    port: 22122
  - host: 10.10.10.4
    username: apache
    # privateKeyPath: ~/.ssh/id_rsa
    password: "456"
    rootPassword: "123"
    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
Copyright © weiliang-ms 2021 all right reserved,powered by Gitbook本书发布时间: 2023-09-06 14:36:05

results matching ""

    No results matching ""