2014-04-27 27 views
0

我試圖讓Rails 4.1接收反彈電子郵件,但它甚至很難達到這一點。以root身份登錄時,我可以在SSH控制檯中運行以下命令,但是當我將它放入我的/ etc/valiases文件中時,我從腳本中得到一個反彈,說「以下地址失敗」。管道編程失敗,但在SSH控制檯中運行正常

runuser -l useraccount -c "cd /home/useraccount/rails_deployments/dev.www/current/bin && rails runner -e development 'EBlast.receive(STDIN.read)'"

/etc/valiases/dev.mydomain.com

[email protected]: "|runuser -l useraccount -c "cd /home/useraccount/rails_deployments/dev.www/current/bin && rails runner -e development 'EBlast.receive(STDIN.read)'""

我還試圖逃避雙引號也沒有用。

我需要以useraccount身份運行,因爲RVM環境變量對於root不存在。以root用戶身份登錄時在SSH控制檯中運行第1條命令,但在exim收到電子郵件時不能運行。

回答

0

有幾件事情我不得不這樣做,以解決此問題:

1)將亞軍腳本到它自己的文件作爲Todd suggested;嵌套的引號導致腳本無法運行。

2)使文件可執行;權限已被設置爲755.

3)即使exim使用我的用戶名執行腳本,環境變量(如PATH和HOME)根本沒有設置!這導致ruby成爲未知命令。這導致了許多其他問題,因爲大多數應用程序都依賴於RVM及其gemset。所以我不能讓ruby運行,更不用說rails。即使我明確地打電話給紅寶石包裝,spring會中斷,因爲$HOME未設置。只是一連串的問題,因爲沒有設置用戶環境。我也不能只發行su - username -c 'whatever',因爲exim使用的賬戶沒有權限使用su


所以工作設置是這樣的:

/etc/valiases/dev.mydomain.com

[email protected]: "|/bin/bash -l -c '/home/useraccount/rails_deployments/dev.www/current/script/receive_eblast_bounce'" 
*: ":fail: No Such User Here" 

/家庭/ useraccount/rails_deployments的/ dev。WWW /電流/腳本/ receive_eblast_bounce

D=`pwd` 

HOME=/home/useraccount 

if [ -f /etc/bashrc ]; then 
    . /etc/bashrc 
fi 

if [[ -s "/home/useraccount/.rvm/scripts/rvm" ]] ; then 
    source "/home/useraccount/.rvm/scripts/rvm" 
fi 

cd /home/useraccount/rails_deployments/dev.www/current 
./bin/rails runner -e development 'EBlast.receive(STDIN.read)' 

cd $D 

現在,我使用SSL時,它不應該具有的ActionMailer問題,如果這是涉及到一些我在這裏做的我不知道,但至少它執行rails腳本。

+0

它發生在我身上的部分原因是它執行此操作的原因是exim不執行諸如bash之類的shell來生成應用程序。它直接執行應用程序,這就是爲什麼你必須獲取bash在你的啓動過程中爲你完成的環境文件的原因。 –

0

如果不進行一些轉義操作,則不能在雙引號內雙引號。一旦你開始轉義引號,知道何時你還需要轉義其他字符,它會變得複雜。你的例子似乎不太複雜,但我建議一種不同的方法。

恕我直言,你應該創建一個shell腳本,例如eblast-bounce-script,用你想運行的管道命令。然後設置你的別名:

[email protected]: "|/path/to/eblast-bounce-script" 

確保使腳本可執行,可運行,並通過進出口銀行將調用它的用戶。如果您創建腳本模式755(由root擁有),那應該足夠了。

+0

[email protected]:「| runuser -l useraccount -c'cd /home/useraccount/rails_deployments/dev.www/current&& script/receive_eblast_bounce'」<<<失敗。它沒有給我一個很好的理由,它只是說「下面的地址失敗了:」並且給我看原始的電子郵件內容。 – JakeTheSnake

+0

我也嘗試將所有腳本移動到receive_eblast_bounce文件中,並像剛剛提到的那樣只使用valiases文件中的文件引用,但我得到了相同的結果。 FWIW receive_eblast_bounce文件是可執行的。 – JakeTheSnake

+0

我認爲它與runuser命令有關。在SSH中,我嘗試運行receive_eblast_bounce作爲useraccount登錄時,但我得到runuser:無法設置組:操作不允許。我敢打賭,這對於編程用戶來說也是如此。但是,我將如何加載我的用戶環境? – JakeTheSnake

相關問題