Skip to content

shell批量执行工具 / shell batch execute tool

License

Notifications You must be signed in to change notification settings

chmodke/remote_exec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

remote_exec

linux服务器批量操作工具。

提供三个功能:

  1. 批量上传文件
  2. 以root用户批量执行命令
  3. 批量下载文件

通过组合这三个功能能完成大多数Linux服务器上的操作。

特性

  • 单文件分发,无依赖,兼容好
  • 跨平台,可在Windows、Linux,x86、ARM环境中执行
  • 任务固化,可重复使用,可对任务进行分组
  • 可配置性好,支持多种远端环境

配置说明

服务器信息配置

config.yaml文件

port: 22
root-prompt: '#'
passwd-prompt: '.*assword.*'
timeout: 10
user: 'kehao'
passwd: '123456'
root-passwd: '123456'
hosts:
  - '172.18.0.3'
  - '172.18.0.4'
spc-hosts:
  - '127.0.0.1 23 123456 123456'
  • port: ssh端口;
  • root-prompt:root用户的提示信息,golang正则表达式;
  • passwd-prompt:root用户输入password的提示信息,golang正则表达式;
  • timeout:等待登录的超时时长,单位:秒;
  • user:ssh登录用户;
  • passwd:ssh登录密码;
  • root-passwd:root用户密码;
  • hosts:服务器IP地址列表;
  • spc_hosts:特殊密码的服务器列表,格式:IP PORT 用户密码 root用户密码

任务配置

command.yaml文件

put:
  - /home/kehao/test1.sh#/home/kehao
exec:
  - /bin/sh /home/kehao/test1.sh
get:
  - /home/kehao/result1.txt#/home/kehao/result

arthas:
  put:
    - /home/kehao/arthas.sh#/home/kehao
    - /home/kehao/jdk8.sh#/home/kehao
  exec:
    - /bin/sh /home/kehao/arthas.sh
    - /bin/sh /home/kehao/jdk8.sh
  get:
    - /home/kehao/arthas-result.txt#/home/kehao/result
    - /home/kehao/jdk8-result.txt#/home/kehao/result
  • put:上传文件列表,格式:本地文件路径#远程目录名称,远程目录名称可缺省,默认与本地文件路径的目录名相同,ssh登录用户需要具有远程目录的写权限;
  • exec:需要执行的命令列表,命令将以root用户执行;
  • get:下载的文件列表,格式:远程文件路径#本地目录名称,本地目录名称可缺省,默认与远程文件路径的目录名相同,ssh登录用户需要具有远程文件的读权限。

使用方法

命令

批量上传

remote put

批量执行

remote exec

批量下载

remote get

参数

remote --help
remote execute tool

Usage:
  remote [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  exec        execute command on remote
  get         get file from remote
  help        Help about any command
  put         put file to remote

Flags:
  -c, --command string   Specify commands configuration (default "command.yaml")
  -f, --config string    Specify servers configuration (default "config.yaml")
  -h, --help             help for remote
  -m, --netmask string   ip filter, e.g. 192.168.1.1 192.168.1.1,192.168.1.2 192.168.0.0/24
  -t, --thread int       maximum number of concurrent (0 < t <= 16) (default 1)
  -v, --version          version for remote

Use "remote [command] --help" for more information about a command.
  • 服务器配置文件(f),默认值config.yaml
  • 命令配置文件(c),默认值command.yaml
  • 最大并发数(t),0 < t <= 16,默认值1,开启并发执行能提高执行效率,但是输出结果会乱序
  • IP地址过滤(m),默认为空,支持192.168.1.1、192.168.1.1,192.168.1.2、192.168.0.0/24三种写法,匹配的主机才会执行

使用样例

测试脚本:

test1.sh

echo "test1.sh" >/home/kehao/result1.txt
hostname -s >>/home/kehao/result1.txt
hostname -i >>/home/kehao/result1.txt
id >>/home/kehao/result1.txt
chown kehao: /home/kehao/result1.txt
echo "I am $(hostname -i) :)"

运行日志:

kehao@kehaopcs ~/remote_exec $ ./remote_x86 put
2024/02/04 16:59:32 start put file...
2024/02/04 16:59:32 progress [2/3]...
2024/02/04 16:59:32 [172.18.0.3:22] upload /home/kehao/test1.sh to /home/kehao.
2024/02/04 16:59:32 [172.18.0.3:22] upload /home/kehao/test1.sh finished!
2024/02/04 16:59:32 progress [1/3]...
2024/02/04 16:59:32 [172.18.0.4:22] upload /home/kehao/test1.sh to /home/kehao.
2024/02/04 16:59:32 [172.18.0.4:22] upload /home/kehao/test1.sh finished!
2024/02/04 16:59:33 progress [0/3]...
2024/02/04 16:59:34 [127.0.0.1:23] upload /home/kehao/test1.sh to /home/kehao.
2024/02/04 16:59:34 [127.0.0.1:23] upload /home/kehao/test1.sh finished!
2024/02/04 16:59:34 put file finished.
kehao@kehaopcs ~/remote_exec $ 
kehao@kehaopcs ~/remote_exec $ ./remote_x86 exec
2024/02/04 16:59:37 start execute command...
2024/02/04 16:59:37 progress [2/3]...
2024/02/04 16:59:38 [172.18.0.3:22] execute (/bin/sh /home/kehao/test1.sh).
2024/02/04 16:59:38 [172.18.0.3:22] execute (/bin/sh /home/kehao/test1.sh) result: 
I am 172.18.0.3 :)
[root@5f0c9135f133 ~]# 
2024/02/04 16:59:38 [172.18.0.3:22] execute command finished!
2024/02/04 16:59:38 progress [1/3]...
2024/02/04 16:59:38 [172.18.0.4:22] execute (/bin/sh /home/kehao/test1.sh).
2024/02/04 16:59:38 [172.18.0.4:22] execute (/bin/sh /home/kehao/test1.sh) result: 
I am 172.18.0.4 :)
[root@05d92c6bf1a1 ~]# 
2024/02/04 16:59:38 [172.18.0.4:22] execute command finished!
2024/02/04 16:59:44 progress [0/3]...
2024/02/04 16:59:45 [127.0.0.1:23] execute (/bin/sh /home/kehao/test1.sh).
2024/02/04 16:59:45 [127.0.0.1:23] execute (/bin/sh /home/kehao/test1.sh) result: 
I am 172.18.0.5 :)
[root@1244ba6621fc ~]# 
2024/02/04 16:59:45 [127.0.0.1:23] execute command finished!
2024/02/04 16:59:45 execute command finished.
kehao@kehaopcs ~/remote_exec $ 
kehao@kehaopcs ~/remote_exec $ ./remote_x86 get
2024/02/04 16:59:51 start get file...
2024/02/04 16:59:51 progress [2/3]...
2024/02/04 16:59:51 [172.18.0.3:22] download file from /home/kehao/result1.txt to /home/kehao/result.
2024/02/04 16:59:51 [172.18.0.3:22] download /home/kehao/result1.txt finished!
2024/02/04 16:59:51 progress [1/3]...
2024/02/04 16:59:51 [172.18.0.4:22] download file from /home/kehao/result1.txt to /home/kehao/result.
2024/02/04 16:59:51 [172.18.0.4:22] download /home/kehao/result1.txt finished!
2024/02/04 16:59:53 progress [0/3]...
2024/02/04 16:59:53 [127.0.0.1:23] download file from /home/kehao/result1.txt to /home/kehao/result.
2024/02/04 16:59:53 [127.0.0.1:23] download /home/kehao/result1.txt finished!
2024/02/04 16:59:53 get file finished.

操作结果:

远端

kehao@kehaopcs ~/remote_exec $ docker exec -u kehao test-ssh1 bash -c 'ls -l ~'
total 24
-rw-r--r--. 1 kehao kehao 146 Feb  4 16:59 result1.txt
-rw-r--r--. 1 kehao kehao 146 Feb  4 16:59 result2.txt
-rw-rw-r--. 1 kehao kehao 319 Feb  4 16:59 test1.sh
-rw-rw-r--. 1 kehao kehao  10 Feb  4 16:59 test1.txt
-rw-rw-r--. 1 kehao kehao 319 Feb  4 16:59 test2.sh
-rw-rw-r--. 1 kehao kehao  10 Feb  4 16:59 test2.txt
kehao@kehaopcs ~/remote_exec $ docker exec -u kehao test-ssh2 bash -c 'ls -l ~'
total 24
-rw-r--r--. 1 kehao kehao 146 Feb  4 16:59 result1.txt
-rw-r--r--. 1 kehao kehao 146 Feb  4 16:59 result2.txt
-rw-rw-r--. 1 kehao kehao 319 Feb  4 16:59 test1.sh
-rw-rw-r--. 1 kehao kehao  10 Feb  4 16:59 test1.txt
-rw-rw-r--. 1 kehao kehao 319 Feb  4 16:59 test2.sh
-rw-rw-r--. 1 kehao kehao  10 Feb  4 16:59 test2.txt

本地:

kehao@kehaopcs ~/remote_exec $ ls -l /home/kehao/result/
total 64
-rw-r--r--. 1 kehao manager 146 Feb  4 16:59 127.0.0.1_23_result1.txt
-rw-r--r--. 1 kehao manager 146 Feb  4 16:59 172.18.0.3_22_result1.txt
-rw-r--r--. 1 kehao manager 146 Feb  4 16:59 172.18.0.4_22_result1.txt
kehao@kehaopcs ~/remote_exec $ cat /home/kehao/result/172.18.0.3_22_result1.txt
test1.sh
4c2db381a3d8
172.18.0.3
uid=0(root) gid=0(root) groups=0(root)

About

shell批量执行工具 / shell batch execute tool

Resources

License

Stars

Watchers

Forks

Packages

No packages published