当前位置:   article > 正文

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

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文件
  1. [root@llody-dev ~/go-build]#cat hosts.txt
  2. 192.168.1.232:22:root:admin
  3. 192.168.1.220:22:root:admin

文件下发 -- copy

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

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

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

  1. [root@llody-dev ~/go-build]#go run ops.go --hosts ./hosts.txt --run "ls -lah /opt/ | grep go"
  2. [192.168.1.220] 正在执行任务...
  3. Checking host: 192.168.1.220
  4. [192.168.1.232] 正在执行任务...
  5. Checking host: 192.168.1.232
  6. Result from 192.168.1.220:
  7. -rw-r--r-- 1 root root 401 Oct 30 13:40 go.mod
  8. [192.168.1.220] 任务完成
  9. Result from 192.168.1.232:
  10. -rw-r--r-- 1 root root 401 1030 13:40 go.mod
  11. [192.168.1.232] 任务完成
  12. [root@llody-dev ~/go-build]#go run ops.go --hosts ./hosts.txt --run "rm -rf /opt/go.mod"
  13. [192.168.1.220] 正在执行任务...
  14. Checking host: 192.168.1.220
  15. [192.168.1.232] 正在执行任务...
  16. Checking host: 192.168.1.232
  17. Result from 192.168.1.220:
  18. [192.168.1.220] 任务完成
  19. Result from 192.168.1.232:
  20. [192.168.1.232] 任务完成
  21. [root@llody-dev ~/go-build]#go run ops.go --hosts ./hosts.txt --run "sh demo.sh"
  22. [192.168.1.220] 正在执行任务...
  23. Checking host: 192.168.1.220
  24. [192.168.1.232] 正在执行任务...
  25. Checking host: 192.168.1.232
  26. Result from 192.168.1.220:
  27. ┏┓ ┏┓
  28. ┏┛┻━━━━━━┛┻┓
  29. ┃ ☃ ┃
  30. ┃ ┳┛ ┗┳ ┃
  31. ┃ ┻ ┃
  32. ┗━┓ ┏━┛
  33. ┃ ┗━━━━━┓
  34. ┃ 神兽保佑 ┣┓
  35. ┃ 永无BUG! ┏┛
  36. ┗┓┓┏━┳┓┏━━━━━┛
  37. ┃┫┫ ┃┫┫
  38. ┗┻┛ ┗┻┛
  39. [192.168.1.220] 任务完成
  40. Result from 192.168.1.232:
  41. ┏┓ ┏┓
  42. ┏┛┻━━━━━━┛┻┓
  43. ┃ ☃ ┃
  44. ┃ ┳┛ ┗┳ ┃
  45. ┃ ┻ ┃
  46. ┗━┓ ┏━┛
  47. ┃ ┗━━━━━┓
  48. ┃ 神兽保佑 ┣┓
  49. ┃ 永无BUG! ┏┛
  50. ┗┓┓┏━┳┓┏━━━━━┛
  51. ┃┫┫ ┃┫┫
  52. ┗┻┛ ┗┻┛
  53. [192.168.1.232] 任务完成

总结

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/418596
推荐阅读
相关标签
  

闽ICP备14008679号