有Trae助力1天时间用Node搞了个SSH命令行工具!解放双手~

哈喽哇!我是小不不简说的不。在代码世界疯狂蹦跶的 "非资深选手"🙋‍♂️!主打一个*"踩坑我来,避坑你学"*。毕竟独乐乐不如众乐乐,让大家少走弯路,才是咱的终极使命✨~

之前写了一篇工程化实战,用 Nodejs 自动部署前端项目。

又想偷懒,不CV代码。所以搞了个工具☺️

今天借助Trae,狠狠的升级了一波。让它更通用。并且开源啦~ github.com/CcSimple/sv...

先看效果

sv-ssh: 服务器操作自动化工具

一个基于Node.js的命令行工具,帮助开发者通过SSH自动化服务器操作流程,支持自定义配置和操作流程定义。

✨ 特性

  • 交互式配置服务器连接信息
  • 支持自定义环境变量文件和操作流程文件
  • 内置文件压缩、上传、移动、复制、重命名、解压、命令行、删除等操作
  • 支持自定义操作函数,扩展功能
  • 代码风格统一(ESLint + Prettier)
  • 支持多个配置文件,每个文件对应不同的服务器环境或操作流程

全局安装

bash 复制代码
npm install -g sv-ssh
# 初始化配置
sv-ssh init
# 运行操作流程
sv-ssh run

项目内安装

bash 复制代码
npm install sv-ssh --save-dev
# 添加到package.json脚本
# "scripts": {
#   "init": "sv-ssh init",
#   "run": "sv-ssh run"
# }

⚙️ 命令说明

1. 初始化配置文件

使用init命令创建配置文件和操作流程模板:

bash 复制代码
# 默认初始化
#(生成.sv-ssh.env和sv-ssh-actions.js)
sv-ssh init

# 自定义环境变量文件名和操作流程文件名
sv-ssh init -e my-env.env -a my-actions.js

init命令选项:

  • -e, --env <filename>: 自定义环境变量文件名(默认:.sv-ssh.env)
  • -a, --actions <filename>: 自定义操作流程文件名(默认:sv-ssh-actions.js)

执行后将引导您输入服务器IP、端口、用户名、密码和密钥文件路径等配置信息。密钥文件默认路径:

  • macOS/Linux: ~/.ssh/id_rsa
  • Windows: C:\Users\用户名.ssh\id_rsa

2. 执行操作流程

执行时将读取环境变量文件中的服务器配置,并按照操作流程文件中的定义执行一系列SSH操作。

使用run命令执行定义的操作流程:

bash 复制代码
# 使用默认配置文件执行
sv-ssh run

# 指定自定义配置文件
sv-ssh run -e my-env.env -o my-actions.js

run命令选项:

  • -e, --env <filename>: 指定环境变量文件(默认:.sv-ssh.env)
  • -a, --actions <filename>: 指定操作流程文件(默认:sv-ssh-actions.js)

多个配置文件支持! run 不指定配置文件时,提供选择列表,默认使用 .sv-ssh.env 和 sv-ssh-actions.js。
您可以新增 .sv-ssh-ignore 文件,支持选择列表过滤的文件。

bash 复制代码
# .sv-ssh-ignore
.pro.env
.test.env
.eslintrc.js
.prettierrc.js

默认排除以下文件

js 复制代码
[
  '.eslintrc.js',
  'rollup.config.js',
  '.prettierrc.js',
  'webpack.config.js',
  'vite.config.js',
  'gulpfile.js',
  'jest.config.js',
  'mocha.config.js',
  'vue.config.js',
  'next.config.js',
  'nuxt.config.js',
  'husky.config.js',
  'lint-staged.config.js',
  'deploy.js',
  'setup.js',
  'server.js',
  'babel.config.js',
  'commitlint.config.js',
];

📝 配置文件说明

环境变量文件 (.sv-ssh.env)

ini 复制代码
# 服务器连接配置
HOST=your.server.ip
PORT=22
USERNAME=your-username
PASSWORD=your-password
PRIVATE_KEY=/path/to/private/key

操作流程文件 (sv-ssh-actions.js)

javascript 复制代码
/**
 * 操作流程配置文件
 * 支持的操作类型:
 * - compress: 本地文件压缩
 * - upload: 文件上传到服务器
 * - move: 服务器文件移动
 * - copy: 服务器文件复制
 * - rename: 服务器文件重命名
 * - unzip: 服务器文件解压
 * - delete: 服务器文件删除
 * - command: 执行服务器命令
 * - custom: 自定义操作函数
 */
export default [
  {
    name: '压缩本地文件',
    type: 'compress',
    localDir: './dist',
    outputPath: './dist.zip',
    options: { zlib: { level: 9 } },
  },
  {
    name: '上传到服务器',
    type: 'upload',
    localPath: './dist.zip',
    remotePath: '/tmp/dist.zip',
    options: { createDir: true },
  },
  // 更多操作... 见仓库说明
];

自定义操作 (custom)

  • 执行自定义JavaScript函数
  • 参数 :
    • function: 自定义异步函数,接收参数 (ssh, config, action, actionsConfig, previousOutput)
      • ssh: SSH2连接实例
      • previousOutput: 前一步操作的输出结果
      • config: 配置对象,包含连接信息
      • action: 当前操作配置对象
      • actionsConfig: 所有操作配置数组
  • 示例:
javascript 复制代码
{
  name: '自定义部署检查',
  type: 'custom',
  function: async (ssh, previousOutput, config, action, actionsConfig) => {
    console.log('执行自定义健康检查...');
    const { stdout } = await ssh.execCommand('curl -s http://localhost/health');
    if (!stdout.includes('OK')) {
      throw new Error('服务健康检查失败');
    }
  }
}

开源地址

github.com/CcSimple/sv...

gitee.com/CcSimple/sv...

写到最后

💡 温馨提示:本文章可随意 "转发扩散",让更多小伙伴加入 "少踩坑联盟"!毕竟独坑坑不如众坑坑...... 啊不,是独乐乐不如众乐乐😂!

👉 快来关注小不悄悄说:评论区蹲一个 "你最想知道的代码小技巧,demo",下一期说不定就为你量身定制啦🎯!

相关推荐
To_OC1 小时前
对接大模型流式接口,我被一个 ReadableStream 卡了半小时
前端·node.js·llm
fthux7 小时前
RenoPit 能为普通业主做什么?看懂图纸、审查合同,提前发现装修坑
javascript·人工智能·ai·开源·github·chrome扩展·open source·edge扩展·firefox扩展
冬奇Lab12 小时前
每日一个开源项目(第169篇):AIRI - 开源自托管 AI 虚拟伴侣,能打 Minecraft 的 Neuro-sama 复现
人工智能·开源·资讯
特立独行的猫a14 小时前
鸿蒙PC Node.js三方库移植的AI移植框架与社区贡献完整流程
华为·node.js·harmonyos·三方库移植·鸿蒙pc
带娃的IT创业者14 小时前
中国开源大模型策略:正在赢得全球AI竞赛
人工智能·开源·qwen·开源大模型·deepseek·ai竞赛·开源策略
AI 编程助手GPT14 小时前
Cursor Router 上线后,我用 Node.js 实现了一个可解释的模型路由器
node.js
Freak嵌入式14 小时前
MCU 低功耗模式解析:时钟门控、电源门控、深度休眠
人工智能·python·单片机·嵌入式硬件·开源·依赖倒置原则·micropython
栈底拾遗15 小时前
AtomGit:国内唯一开源 + AI 一体化自主基础设施
人工智能·开源
ApacheSeaTunnel16 小时前
Apache SeaTunnel 2.3.12 进阶实战:MySQL to PostgreSQL 5 套生产场景同步 Demo
大数据·开源·数据集成·seatunnel·技术分享·数据同步
半个落月18 小时前
用 Node.js 搭建 EPUB 问答助手:从文本切片、向量检索到 RAG
人工智能·node.js