【n8n教程】:n8n CLI 命令行工具

【n8n教程】:n8n CLI 命令行工具

在日常的工作流自动化中,我们经常需要快速地启动工作流、导出备份或批量管理配置。虽然 n8n 编辑器提供了友好的图形界面,但 n8n 命令行界面(CLI) 提供了更强大、更灵活的管理方式。无论你是想通过命令行执行工作流,还是需要进行批量导出导入操作,n8n CLI 都能帮助你事半功倍。

本教程将带你快速上手 n8n CLI,从基础概念到实战操作,让你成为命令行工作流管理的高手。


第一部分:什么是 n8n CLI?

CLI 的核心价值

n8n CLI 是一个强大的命令行工具,允许你:

  • 启动和管理工作流 无需打开 Web 界面
  • 批量导出导入 工作流和凭据,方便备份和迁移
  • 自动化管理 用户、许可证和系统设置
  • 集成到脚本 中,实现更复杂的自动化流程

支持的环境

n8n CLI 可在以下两种环境中使用:

1. npm 安装

如果你通过 npm 安装了 n8n,命令可直接使用:

n8n <command>
2. Docker 容器

如果你使用 Docker 运行 n8n,需要这样执行命令:

docker exec -u node -it <n8n-container-name> n8n <command>

例如

docker exec -u node -it n8n_container n8n workflow:list

第二部分:关键 CLI 命令详解

1. 工作流执行命令

启动单个工作流

执行保存的工作流,通过其 ID 指定:

n8n execute --id <WORKFLOW_ID>

实例

n8n execute --id NGgtX67xWcwx2a3I

应用场景

  • 定时执行脚本中的工作流
  • 集成到 CI/CD 流程中
  • 在服务器启动时自动运行特定工作流

2. 工作流状态管理

激活工作流
n8n update:workflow --id=<ID> --active=true
停用工作流
n8n update:workflow --id=<ID> --active=false
批量管理工作流状态

停用所有工作流:

n8n update:workflow --all --active=false

激活所有工作流:

n8n update:workflow --all --active=true

重要提示:这些命令需要重启 n8n 才能生效!

应用场景

  • 系统维护期间停用所有工作流
  • 批量部署新版本工作流前的准备
  • 故障排查时快速关闭自动化流程

3. 工作流导出命令

导出所有工作流
n8n export:workflow --all

输出到标准输出(终端显示)。

导出特定工作流
n8n export:workflow --id=<ID> --output=workflow.json
导出所有工作流到特定目录
n8n export:workflow --all --output=backups/latest/file.json
使用备份标志导出(推荐用于备份)
n8n export:workflow --backup --output=backups/latest/

此命令会:

  • 自动启用 --all --pretty --separate
  • 每个工作流保存为单独文件
  • 易于版本控制和对比

命令标志说明

标志说明
--all导出所有工作流
--id导出指定 ID 的工作流
--output指定输出文件或目录
--pretty格式化输出,更易阅读
--separate每个工作流单独保存为文件
--backup备份模式,相当于 --all --pretty --separate

4. 凭据导出命令

导出所有凭据
n8n export:credentials --all
导出特定凭据
n8n export:credentials --id=<ID> --output=creds.json
导出为纯文本格式(用于迁移)
n8n export:credentials --all --decrypted --output=creds_plain.json

⚠️ 安全警告:导出的纯文本文件包含敏感信息,请妥善保管!


5. 工作流和凭据导入命令

导入单个工作流
n8n import:workflow --input=workflow.json
导入多个工作流(从目录)
n8n import:workflow --separate --input=backups/latest/
导入凭据
n8n import:credentials --input=credentials.json
导入到特定项目
n8n import:workflow --input=workflow.json --projectId=<PROJECT_ID>

重要说明

  • 导出时 n8n 会记录工作流和凭据的 ID
  • 如果导入同 ID 的对象,会覆盖现有的
  • 为了避免覆盖,可在导入前删除或修改 JSON 中的 ID

6. 实体导出(完整数据库备份)

导出整个数据库的所有实体(包括工作流历史):

n8n export:entities --outputDir=./db_backup

包含执行历史的大型备份:

n8n export:entities --outputDir=./db_backup --includeExecutionHistoryDataTables

然后可以导入到其他数据库:

n8n import:entities --inputDir=./db_backup

应用场景

  • SQLite 迁移到 PostgreSQL
  • 完整的系统备份和恢复
  • 多个 n8n 实例之间的数据迁移

7. 用户管理命令

重置用户管理系统
n8n user-management:reset

此命令会移除所有用户账户,恢复到初始状态。

应用场景

  • 忘记管理员密码且未设置邮件恢复
  • 清除所有用户进行全新部署
禁用用户的 MFA(多因素认证)
n8n mfa:disable --email=user@example.com

用户可重新登录后重新设置 MFA。

重置 LDAP 设置
n8n ldap:reset

8. 许可证管理命令

清除许可证
n8n license:clear

重置 n8n 为默认功能。

查看许可证信息
n8n license:info

显示当前许可证状态和信息。


9. 安全审计命令

检测 n8n 实例中的常见安全问题:

n8n audit

此命令会扫描并报告:

  • 不安全的配置
  • 潜在的漏洞
  • 建议的安全改进

第三部分:实战案例 - 工作流备份和恢复系统

现在让我们通过一个完整的案例,学习如何使用 CLI 命令构建一个自动备份系统。

场景

你需要:

  1. 定期备份所有工作流
  2. 备份所有凭据
  3. 能够快速恢复

n8n 工作流备份和恢复流程图

实现步骤

第一步:创建备份脚本

创建一个 backup.sh 文件:

#!/bin/bash

# 设置备份目录
BACKUP_DIR="./n8n_backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_PATH="$BACKUP_DIR/backup_$TIMESTAMP"

# 创建备份目录
mkdir -p "$BACKUP_PATH"

echo "开始备份 n8n 工作流和凭据..."

# 导出所有工作流
echo "导出工作流..."
n8n export:workflow --backup --output="$BACKUP_PATH/workflows/"

# 导出所有凭据
echo "导出凭据..."
n8n export:credentials --all --output="$BACKUP_PATH/credentials.json"

# 创建备份清单
echo "备份时间: $TIMESTAMP" > "$BACKUP_PATH/backup_info.txt"
echo "工作流数: $(ls -1 $BACKUP_PATH/workflows/ | wc -l)" >> "$BACKUP_PATH/backup_info.txt"

echo "备份完成!位置: $BACKUP_PATH"
第二步:设置定时备份

使用 crontab 设置每天凌晨 2 点执行备份:

crontab -e

添加以下行:

0 2 * * * /path/to/backup.sh
第三步:恢复备份

当需要恢复时,执行:

# 恢复工作流
n8n import:workflow --separate --input="./n8n_backups/backup_20240101_020000/workflows/"

# 恢复凭据
n8n import:credentials --input="./n8n_backups/backup_20240101_020000/credentials.json"

第四部分:可执行工作流示例

下面是一个完整的可执行工作流示例,结合 CLI 命令的实际应用。这个工作流会:

  1. 按计划运行
  2. 执行一个主要的数据处理工作流
  3. 导出执行结果
  4. 发送通知

完整工作流 JSON

{
  "name": "CLI Workflow Manager",
  "nodes": [
    {
      "parameters": {
        "interval": 1,
        "unit": "days"
      },
      "id": "Schedule Trigger",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1,
      "position": [250, 300]
    },
    {
      "parameters": {
        "command": "n8n execute --id YOUR_WORKFLOW_ID"
      },
      "id": "Execute Command",
      "name": "Execute Command",
      "type": "n8n-nodes-base.executeCommand",
      "typeVersion": 1,
      "position": [450, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://your-webhook-url.com",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "status",
              "value": "workflow_executed"
            },
            {
              "name": "timestamp",
              "value": "={{ $now }}"
            }
          ]
        }
      },
      "id": "HTTP Request",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [650, 300]
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Execute Command",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Command": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {}
}

如何使用此工作流

  1. 在 n8n 中导入

    • 打开 n8n 编辑器
    • 点击右上角 ···Import from File
    • 选择包含上述 JSON 的文件
  2. 配置参数

    • YOUR_WORKFLOW_ID 替换为实际的工作流 ID
    • https://your-webhook-url.com 替换为你的 Webhook 地址
  3. 激活工作流

    • 点击右上角的 Active 按钮
    • 工作流现在会每天自动执行
  4. 监控执行

    • 在工作流列表中查看执行记录
    • 通过 Webhook 接收执行通知

第五部分:常见问题解答

Q1:导出的凭据包含敏感信息吗?

A:默认情况下,凭据被加密。只有添加 --decrypted 标志时才会以纯文本形式导出。纯文本导出应谨慎处理!

Q2:如果 ID 重复,导入会发生什么?

A:如果导入的工作流或凭据 ID 与现有的相同,新导入的会覆盖现有的。为避免这种情况,可在 JSON 文件中删除或修改 ID。

Q3:导出和导入支持不同的数据库类型吗?

A:是的!使用 export:entitiesimport:entities 命令,你可以在 SQLite、PostgreSQL 等不同数据库类型之间迁移。

Q4:如何在 Docker 中执行 CLI 命令?

A:使用 docker exec -u node -it <container-name> n8n <command>。例如:

docker exec -u node -it my_n8n n8n export:workflow --all

Q5:能否通过 CLI 创建新的工作流?

A:CLI 主要用于管理和执行现有工作流。新工作流建议通过 Web 编辑器或工作流模板导入。


第六部分:最佳实践建议

1. 定期备份

# 每周执行一次完整备份
0 0 * * 0 /path/to/backup.sh

2. 版本控制

使用 --separate 标志将每个工作流保存为单独文件,便于 Git 版本控制:

n8n export:workflow --backup --output=workflows_backup/
git add workflows_backup/
git commit -m "Backup workflows"

3. 安全管理

  • 定期运行安全审计
  • 不要在公共环境中暴露凭据
  • 使用加密的备份存储

4. 监控和告警

使用 CLI 在脚本中集成监控:

if ! n8n execute --id WORKFLOW_ID; then
  # 发送告警
  curl -X POST https://alerts.example.com/error
fi

总结

通过 n8n CLI,你可以:

快速执行 工作流而无需打开编辑器
批量管理 工作流和凭据
自动化备份 关键数据
与脚本集成 实现更复杂的自动化
简化运维 工作流


官方文档
n8n系列教程

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值