私は、電子メールが(cpanelで転送される電子メールによって)パイプされるシェルスクリプトを作成しようとしています。
シェルスクリプトは、curlを使用して電子メール全体をURLに投稿します。
スクリプトは次のようになります。
curl -d "param=$1" http://localhost/stuff/
そして、フォワードは次のようになります。
|/home/usr/script/curlthis.sh
これは一種の作業にすぎません。
カールがURLに正常に投稿されても、電子メールは返送されます。(メールの一部しか投稿されていないようですが、100%確信はありません)
stdinを読んでいないためにメールが返送されると言われましたが、なぜそれを行う必要があるのか、なぜ$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にリダイレクトしないと、何らかの理由で電子メールが返送されます。