n8n 低代码中的坑

原因

n8n 是低代码平台,用于快速搭建流程。

目标流程:

graph LR appsmith_输入数据 --> B[n8n_webhook接收数据] B --> C[js_function处理] C --> D[存储为csv] D --> E[SFTP上传文件] E --> F[企业微信/邮件通知]

问题一

js 处理完的 json 数组,存储为 csv 的时候只能存成一行,但是格式需要每组数据一行。

使用 item lists 组件来 split out 拆分为不同行(json 为不同 KV )

{
"newdata": [
"00340434659730189488;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189495;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189501;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189518;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189525;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189532;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189549;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189556;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189563;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189570;20220812091736;12345;Shenzhen;AA;DE;01;02",
"00340434659730189587;20220812091736;12345;Shenzhen;AA;DE;01;02",
}

变为

[
{
"newdata": "00340434659730189488;20220812091736;12345;Shenzhen;AA;DE;01;02"
},
{
"newdata": "00340434659730189495;20220812091736;12345;Shenzhen;AA;DE;01;02"
},
{
"newdata": "00340434659730189501;20220812091736;12345;Shenzhen;AA;DE;01;02"
},
...
]

问题二

n8n 自带的 SFTP 模块与服务商的 SFTP 服务器协议不兼容,报错鉴权不过(通过 n8n 连接 A 服务器,以及 A 服务器连接服务商,证实二者就是不能直连)。

使用 SSH 组件,将文件传到 A 服务器,再 SSH 到 A 服务器,使用 lftp 工具将文件传给服务商。

lftp -c "put /home/shaoke/<file> -o sftp://<username>:<password>@<服务商服务器>/prod/in/<file>"

问题三

运行 lftp 发现还是有问题,似乎把密码的一部分当成了端口号,报错 bad port

发现密码中有 / 字符,从该字符之后被识别为端口号。

这里 找到答案,

将特殊字符转义。 假设密码为!@#$!、@、#、$的转义分别为%21、%40、%23、%24。于是用lftp直接打开时就需要用如下方式:
lftp user:%21%40%23%24@host:port

转义字符表

转义后恢复正常。

Comments
Write a Comment
'