2011-04-18 45 views
1

我寫了一個小小的腳本,查找維基百科上的一個工作,然後將結果打印到命令行。我希望能夠通過電子郵件將這個單詞發送到我的服務器,然後讓我的服務器將結果發回給我。在收到的電子郵件上運行linux腳本

到目前爲止,我有一個名爲'維基'的電子郵件正在發送到的新用戶。我收到的電子郵件很好。在/ etc/aliases中,我將傳入的電子郵件重定向到我寫的腳本。

# See man 5 aliases for format 
wiki: "|/home/wiki/scripts/wiki" 

工作正常。

我的腳本作品在命令行發現,因爲如果我輸入

$ ./wiki <whatever> 

我得到許可被拒絕錯誤,當我發了封郵件給[email protected]

我的wiki腳本的權限是:

-rwxr-xr-x 1 wiki wiki 427 2011-04-18 22:54 wiki 

出了什麼問題!我需要設置什麼權限? 任何幫助表示讚賞。

編輯(4/18/11 8:20 pm): 這是我的腳本。

#!/bin/bash 

read MSG 
echo $MSG >> "newfile" 
FROM=$(echo "$MSG" | cut -d " " -f2) 
DATA=$(echo "$MSG" | cut -d " " -f3) 
if [ MSG ] 
then 
RTN=`nslookup -q=txt $DATA.wp.dg.cx | grep "text =" | cut -d"=" -f2` 

echo $RTN | sendmail -s "wikipedia: '$DATA'" $FROM 

else 
echo wilkipedia nslookup. Please supply a command line argument. 
fi 
+0

確定實際的腳本返回了錯誤,該腳本中沒有什麼?如果你在頂部放置'echo suceeded && exit'以確保它被調用,會發生什麼呢? – yan 2011-04-18 23:08:18

+0

我在回覆電子郵件中收到此消息 命令以127狀態終止: 「/ home/wiki/scripts/wiki」。命令輸出:/ home/wiki/scripts/wiki:第8行: newfile:Permission denied nslookup:'.wp.dg.cx'不是合法名稱(空 標籤)/ home/wiki/scripts/wiki:line 15:sendmail:命令未找到 – italiansoda 2011-04-19 00:28:49

回答

0

這是我做過什麼來照顧我的問題......

  1. 我報廢了我的bash腳本,並在Python寫了相同的功能。我使用python是因爲它的電子郵件解析功能。我還通過一些字符串轉義防止代碼運行了用戶輸入,以便我可以安全地將它交給python的subprocess.popen()方法。

  2. 我試圖寫標準輸入到本地文件,所以我可以看到解析文本,但郵件應用(郵件或後綴,不知道)沒有權限寫入文件 - 概率的好最後的事情。爲了進行調試,我只是將原始標準輸入(電子郵件標題和所有內容)返回到一個字符串中,並通過電子郵件將其發回給我自己,以查看發生了什麼。

  3. 我設定/ etc/aliases中讀取上wiki.py

    wiki: "|/home/wiki/scripts/wiki.py"

  4. 權限

    4 -rw-r--r-- 1 wiki mail 1902 2011-04-19 21:04 wiki.py

    和這樣的郵件程序成功動手吧給您的腳本。如果你的腳本有錯誤,你也可以去檢查「/var/log/mail.log」輸出,沒有任何東西會通過電子郵件發回給你。如果郵件到達了腳本,但由於語法或錯誤而出錯,您應該收到來自MAILER-DAEMON的電子郵件回覆,指出郵件無法投遞。

  5. 我沒有使用procmail或有.procmailrc文件。 /etc/aliases工作得很好。它通過電子郵件的標準輸入流,並在蟒蛇試試這個:

extra="" while 1: line = sys.stdin.readline() if not line: break extra = extra + line.strip(" ")

0

根據您的郵件服務器(如後綴),您可能需要將其配置爲允許管道郵件。大多數情況下,使用〜/ .procmailrc最簡單。

相關問題