【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,命令可直接使用:

bash 复制代码
n8n <command>
2. Docker 容器

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

bash 复制代码
docker exec -u node -it <n8n-container-name> n8n <command>

例如

bash 复制代码
docker exec -u node -it n8n_container n8n workflow:list

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

1. 工作流执行命令

启动单个工作流

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

bash 复制代码
n8n execute --id <WORKFLOW_ID>

实例

bash 复制代码
n8n execute --id NGgtX67xWcwx2a3I

应用场景

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

2. 工作流状态管理

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

停用所有工作流:

bash 复制代码
n8n update:workflow --all --active=false

激活所有工作流:

bash 复制代码
n8n update:workflow --all --active=true

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

应用场景

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

3. 工作流导出命令

导出所有工作流
bash 复制代码
n8n export:workflow --all

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

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

此命令会:

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

命令标志说明

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

4. 凭据导出命令

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

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


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

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

重要说明

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

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

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

bash 复制代码
n8n export:entities --outputDir=./db_backup

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

bash 复制代码
n8n export:entities --outputDir=./db_backup --includeExecutionHistoryDataTables

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

bash 复制代码
n8n import:entities --inputDir=./db_backup

应用场景

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

7. 用户管理命令

重置用户管理系统
bash 复制代码
n8n user-management:reset

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

应用场景

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

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

重置 LDAP 设置
bash 复制代码
n8n ldap:reset

8. 许可证管理命令

清除许可证
bash 复制代码
n8n license:clear

重置 n8n 为默认功能。

查看许可证信息
bash 复制代码
n8n license:info

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


9. 安全审计命令

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

bash 复制代码
n8n audit

此命令会扫描并报告:

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

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

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

场景

你需要:

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

实现步骤

第一步:创建备份脚本

创建一个 backup.sh 文件:

bash 复制代码
#!/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 点执行备份:

bash 复制代码
crontab -e

添加以下行:

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

当需要恢复时,执行:

bash 复制代码
# 恢复工作流
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

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>。例如:

bash 复制代码
docker exec -u node -it my_n8n n8n export:workflow --all

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

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


第六部分:最佳实践建议

1. 定期备份

bash 复制代码
# 每周执行一次完整备份
0 0 * * 0 /path/to/backup.sh

2. 版本控制

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

bash 复制代码
n8n export:workflow --backup --output=workflows_backup/
git add workflows_backup/
git commit -m "Backup workflows"

3. 安全管理

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

4. 监控和告警

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

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

总结

通过 n8n CLI,你可以:

快速执行 工作流而无需打开编辑器

批量管理 工作流和凭据

自动化备份 关键数据

与脚本集成 实现更复杂的自动化

简化运维 工作流


官方文档
n8n系列教程

相关推荐
光锥智能5 小时前
英伟达推出Nemotron 3系列开放模型,AI Agent开源了?
人工智能·开源
KG_LLM图谱增强大模型5 小时前
AdaptBot:融合大模型、知识图谱与人在回路反馈的具身机器人,实现通用到特定任务分解与知识精炼
人工智能·知识图谱
free-elcmacom5 小时前
机器学习高阶教程<3>统计学习理论进阶
人工智能·python·机器学习·统计学习理论
SHIPKING3935 小时前
【AI应用开发设计指南】联网搜索功能——搜索引擎推荐
人工智能
deardao5 小时前
【对比语言-图像预训练】SuperCLIP:基于简单分类监督增强的 CLIP 模型
人工智能·分类·数据挖掘
da_vinci_x5 小时前
PS 消失点:贴图透视总画歪?无需建模,2D 也能“空间绘图”
游戏·aigc·设计师·贴图·技术美术·游戏美术·关卡设计
keineahnung23455 小时前
從 SymBool 到 SymFloat:PyTorch user magic methods 如何支持符號形狀運算?
人工智能·pytorch·python·深度学习
ggabb5 小时前
新国标电动车爬坡困境:当限速25km/h遭遇安全危机,无责伤亡谁来买单?
大数据·人工智能·安全
醇氧5 小时前
springAI学习 (二) 模型
java·学习·spring·ai·ai编程