gpt4 book ai didi

linux - CPanel 电子邮件管道到 linux 中的 shell 脚本,语法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:10 24 4
gpt4 key购买 nike

我正在尝试编写一个 shell 脚本,电子邮件通过管道传输到其中(通过 cpanel 中的电子邮件转发)。

然后 shell 脚本将使用 curl 将整个电子邮件发布到一个 url。

脚本如下所示:

curl -d "param=$1" http://localhost/stuff/

前锋看起来像这样:

|/home/usr/script/curlthis.sh

这只是一种工作。

即使 curl 成功发布到 url,电子邮件也会被退回。 (看起来只有部分电子邮件被发布了,但我不是 100% 确定)

我被告知电子邮件被退回是因为我没有阅读标准输入,但我不确定为什么我需要这样做以及为什么我不能使用 $1?

我如何读取管道的全部内容(然后使用 curl 将其发布),这会阻止邮件服务器将其退回吗?

编辑

使用下面的答案是我想出的:

#!/bin/bash
m=$(cat -)
escapedm="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$m")"
curl -silent -G -d "param=$escapedm" http://localhost/stuff/ 2>&1 >/dev/null

这部分:

2>&1 >/dev/null

非常重要。如果您不将 stdout/err 重定向到 null,则电子邮件会出于任何原因被退回。

最佳答案

您的邮件将作为标准输入上的 传递给脚本,而不是作为参数 ($1)。请注意,转发脚本以管道开头,这是将邮件传递到脚本的机制。

因此您应该能够使用 read 语句在您的 shell(bash?)中读取它。参见 this SO answer了解更多详情。

关于linux - CPanel 电子邮件管道到 linux 中的 shell 脚本,语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12265333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com