开源【gosible】轻量级的 ssh 批量操作工具

原文地址:开源【gosible】轻量级的 ssh 批量操作工具

项目背景

在日常运维工作中,经常遇到上传下载文件,批量主机命令巡检和执行脚本这些操作,

日常工具如ansible,或者其他终端工具太过庞大,且在复杂的环境中难以通用,故写了这个工具,需要满足如下场景使用:

1、批量文件下发,批量命令执行。

2、跨平台,无依赖执行。

3、轻量且稳定。

4、高并发。

项目概述

这个工具是一个命令行应用,使用 urfave/cli 库来处理命令行参数和选项。它的主要功能包括:

  1. 读取主机信息:从指定的文件中读取主机信息,文件格式为每行一个主机,包括主机 IP 地址、端口、用户名和密码。

  2. 并发执行:支持并发执行任务,以加快巡检和文件复制的速度。你可以设置最大并发数来控制并发执行的任务数量,默认为5。

  3. 文件复制:支持将本地文件复制到远程主机,使用 SFTP(SSH File Transfer Protocol)协议来实现。

  4. 远程命令执行:可以在远程主机上执行指定的命令或脚本。

项目地址

github地址GitHub - llody55/gosible: 使用 Golang 语言编写的基于 SSH 协议的工具,旨在执行远程主机文件分发和命令执行功能。

gitee地址: gosible: 使用 Golang 语言编写的基于 SSH 协议的工具,旨在执行远程主机文件分发和命令执行功能。

使用指南

下载二进制文件

wget https://github.com/llody55/gosible/releases/download/v1/gosible-amd64 && chmod +x gosible-amd64 && mv gosible-amd64 /usr/local/bin/gosible

使用示例

  • -hosts:指定主机信息文件的路径。

  • -run:指定要在主机上执行的命令或脚本。

  • -copy:指定要复制的文件的本地路径和远程路径。

创建hosts.txt文件
[root@llody-dev ~/go-build]#cat hosts.txt 
192.168.1.232:22:root:admin
192.168.1.220:22:root:admin

文件下发 -- copy

文件下发主要是从当前主机把指定文件或者目录批量拷贝道远程主机

[root@llody-dev ~/go-build]#go run ops.go --hosts ./hosts.txt --copy "/root/go-build/go.mod:/opt/go.mod"
[192.168.1.220] 正在执行任务...
Copying file /root/go-build/go.mod to host: 192.168.1.220:/opt/go.mod
[192.168.1.232] 正在执行任务...
Copying file /root/go-build/go.mod to host: 192.168.1.232:/opt/go.mod
File /root/go-build/go.mod copied to 192.168.1.220:/opt/go.mod
[192.168.1.220] 任务完成
File /root/go-build/go.mod copied to 192.168.1.232:/opt/go.mod
[192.168.1.232] 任务完成
命令运行 -- run

主要用于运行命令或者执行脚本程序

[root@llody-dev ~/go-build]#go run ops.go --hosts ./hosts.txt --run "ls -lah /opt/ | grep go"
[192.168.1.220] 正在执行任务...
Checking host: 192.168.1.220
[192.168.1.232] 正在执行任务...
Checking host: 192.168.1.232
Result from 192.168.1.220:
-rw-r--r--   1 root root  401 Oct 30 13:40 go.mod

[192.168.1.220] 任务完成
Result from 192.168.1.232:
-rw-r--r--   1 root root 401 10月 30 13:40 go.mod

[192.168.1.232] 任务完成
[root@llody-dev ~/go-build]#go run ops.go --hosts ./hosts.txt --run "rm -rf /opt/go.mod"
[192.168.1.220] 正在执行任务...
Checking host: 192.168.1.220
[192.168.1.232] 正在执行任务...
Checking host: 192.168.1.232
Result from 192.168.1.220:

[192.168.1.220] 任务完成
Result from 192.168.1.232:

[192.168.1.232] 任务完成
[root@llody-dev ~/go-build]#go run ops.go --hosts ./hosts.txt --run "sh demo.sh"
[192.168.1.220] 正在执行任务...
Checking host: 192.168.1.220
[192.168.1.232] 正在执行任务...
Checking host: 192.168.1.232
Result from 192.168.1.220:

             ┏┓      ┏┓
            ┏┛┻━━━━━━┛┻┓
            ┃               ☃           ┃
            ┃  ┳┛   ┗┳ ┃
            ┃     ┻    ┃
            ┗━┓      ┏━┛
              ┃      ┗━━━━━┓
              ┃  神兽保佑     ┣┓
              ┃ 永无BUG!     ┏┛
              ┗┓┓┏━┳┓┏━━━━━┛
               ┃┫┫ ┃┫┫
               ┗┻┛ ┗┻┛


[192.168.1.220] 任务完成
Result from 192.168.1.232:

             ┏┓      ┏┓
            ┏┛┻━━━━━━┛┻┓
            ┃               ☃           ┃
            ┃  ┳┛   ┗┳ ┃
            ┃     ┻    ┃
            ┗━┓      ┏━┛
              ┃      ┗━━━━━┓
              ┃  神兽保佑     ┣┓
              ┃ 永无BUG!     ┏┛
              ┗┓┓┏━┳┓┏━━━━━┛
               ┃┫┫ ┃┫┫
               ┗┻┛ ┗┻┛


[192.168.1.232] 任务完成

总结

SSH 工具是一个用 Go 语言编写的实用工具,旨在简化批量巡检和文件复制任务。通过并发执行任务和支持 SFTP 协议,它可以帮助你更轻松地管理多个远程主机。你可以在实际工作中将其应用于系统管理、部署和维护工作。

如果遇到问题欢迎留言或者提交issues。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

llody_55

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值