2011-03-07 28 views
2

我使用Ubuntu,並試圖編寫一個腳本,其中包含以下內容: - 如果音頻流正常運行 - 如果不是,請發送電子郵件。檢查流媒體服務器是否使用bash?

我嘗試了下面的代碼(每10分鐘運行一次cron作業),如果我提供了錯誤的pw(例如,它會發送一封電子郵件),那麼'有效',但如果實際服務器關閉,通過查殺服務器進行測試)。關於如何修復腳本的任何想法? 在此先感謝!

#!/bin/bash 
#servertest.sh 


username=user1 
password=xyz 


url="http://wwww.streamingaudioserver.com -passwd $password -user $username" 

mplayer $url & 
sleep 5 

test=$(pgrep -c mplayer) 

if [ $test = 0 ]; then 
    #server is down! 
    mailfile="downmail.txt" 
    /usr/sbin/ssmtp [email protected] < "/home/test/$mailfile" 
fi 

killall mplayer 
sleep 5 

exit 
+0

當你說殺死服務器,你的意思是殺死進程或實際上關閉服務器? – mezzie 2011-03-07 12:27:43

+0

關閉服務器,即'模擬'服務器關閉 – Toby 2011-03-07 13:16:49

回答

2

您的問題是在這條線:

$mailfile="downmail.txt" 

刪除美元符號和應該這樣做。

您應該在您的cron日誌中收到錯誤消息,或者發送電子郵件給crontab所有者抱怨沒有找到的命令或沒有這樣的文件。

編輯:

有,如果在命令行(與流下來)運行腳本的工作,而不是cron的?

嘗試在腳本中使用set -x(或#!/bin/bash -x),開啓跟蹤或使用echo "PID: $$, value of \$test: $test" > /tmp/script.out轉讓後,看看你得到你期待的零。

另外,嘗試一個ssmtp命令if之外,以確保它的工作(但我想你已經表示,它是在某些情況下)。

嘗試你的腳本,而無需啓動mplayer。

+0

是的,你是對的,我改變了它。當我更改發佈時,這是一個錯字。在我的bash腳本中是正確的。該腳本的問題在於,如果由於密碼不正確而無法連接到流式服務器,則會發送「服務器關閉」電子郵件,但如果流本身已關閉,則不會發送。 – Toby 2011-03-07 15:49:35

+0

@ user644543:如果從命令行(使用stram而不是cron)運行腳本,您的腳本是否可以工作?嘗試在腳本中使用'set -x'(或'#!/ bin/bash -x')來打開跟蹤或使用'echo「PID:$$,\ $ test的值:$ test」>/tmp /看看你是否得到你期望的零。另外,在'if'之外嘗試'ssmtp'命令以確保它正常工作(但我認爲你已經說過它在某些情況下)。嘗試你的腳本,而無需啓動'mplayer'。 – 2011-03-07 15:56:56

+0

偉大的建議。工作,所以現在我知道這是郵件功能不能正常工作。謝謝! – Toby 2011-03-07 17:04:34