2012-09-04 4 views
1

전자 메일이 파이프되는 (cpanel에서 전자 메일로 전달되는) 셸 스크립트를 작성하려고합니다.CPanel Linux에서 쉘 스크립트로 이메일 보내기, 구문

그러면 쉘 스크립트는 curl을 사용하여 전체 전자 메일을 URL에 게시합니다.

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

을 그리고 전진은 다음과 같습니다 :

스크립트는 다음과 같습니다이는 노력 종류의

|/home/usr/script/curlthis.sh 

.

말풍선이 URL에 성공적으로 게시 되더라도 이메일이 반송됩니다. (전자 메일의 일부분 만 게시되는 것처럼 보이지만 100 % 확신하지 못합니다.)

표준 입력란을 읽지 않아 전자 메일이 반송되는 것으로 들었지만 왜해야하는지 잘 모르겠습니다. 왜 내가 $ 1을 쓸 수 없습니까?

파이프의 전체 내용을 읽은 다음 (말풍선을 사용하여 게시) 어떻게 메일 서버가이 파이프를 다시 수신하지 못하게 할 수 있습니까?

#!/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로 리디렉션하지 않으면 어떤 이유로 든 이메일이 반송됩니다.

답변

2

메일이 매개 변수 ($1)가 아닌 스트림 stdin으로 스크립트에 전달됩니다. 포워드 스크립트는 파이프로 시작하며, 이는 메일에 스크립트를 전달하는 메커니즘입니다.

read 문을 사용하여 쉘 (bash?)에서이 내용을 읽을 수 있어야합니다. 자세한 내용은 this SO answer을 참조하십시오.