【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系列教程

相关推荐
zabr4 小时前
Agent少问你,不代表控制更少
架构·aigc·ai编程
极新4 小时前
中国机器人已出海至141国,售后服务正成为新的机会
大数据·人工智能·机器人
张彦峰ZYF4 小时前
MCP 从“能连工具”到“像 Web 一样部署”——无状态核心、扩展框架与企业级 Agent 基础设施的真正分水岭
人工智能·llm·agent·mcp
ITresearchGuest4 小时前
我用 AI 一小时写了一个世界杯数据可视化平台|前端 VibeCoding 初体验
前端·人工智能·信息可视化
孟健4 小时前
Fable 5.1 实测:15.84 美元,Pro 用户该买吗?
ai编程
AI_yangxi4 小时前
靠谱的短视频矩阵系统
大数据·人工智能·矩阵
czxxxc4 小时前
知识服务迎来 AI 变革,创客匠人 AI 智能体破解创作者运营难题
大数据·人工智能
それども4 小时前
IDEA接入Claude完整流程
java·ai·intellij-idea
黑旋风小威5 小时前
一句话成片教程:用AI快速生成漫剧的实操方法分享
人工智能
冬奇Lab5 小时前
Code Agent 解剖(17):AgentTeams——消息怎么在 agent 之间传递?
人工智能·开源