我正在嘗試創建一個可以通過ssh連接到我的Qnap TS219服務器並在其上運行命令的php腳本。從PHP運行shell腳本
到目前爲止,我的腳本可以很好地連接到服務器,但是當我運行該命令時,我收到一條錯誤消息,我無法弄清楚。
exec.sh
#!/bin/bash
cp /share/MD0_DATA/Qdownload/rapidshare/admin/script.txt /share/MD0_DATA/Qdownload/rapidshare/admin/script.sh
chmod 755 /share/MD0_DATA/Qdownload/rapidshare/admin/script.sh
nohup sh /share/MD0_DATA/Qdownload/rapidshare/admin/script.sh &
exit 0
script.sh
#!/bin/bash
/opt/bin/plowdown -o /share/MD0_DATA/Qdownload/rapidshare /share/MD0_DATA/Qdownload/rapidshare/admin/down.txt 2>/share/MD0_DATA/Qdownload/rapidshare/admin/output.txt
,我當前正在運行的直通SSH我提交表單之後的命令:
echo $ssh->exec('sh /share/MD0_DATA/Qdownload/rapidshare/admin/exec.sh');
眼下生成下面的代碼,但只有在我殺死2個bash進程後(頁面不斷加載,處理器活動在10 0%如果我不殺2的bash進程):
/share/MD0_DATA/.qpkg/Optware/share/plowshare/lib.sh: line 261: getopt: command not found start download (rapidshare): http://rapidshare.com/files/312885386/Free_Stuff-Your_Internet_eBay_Business_Free_Startup_Resources.rar /share/MD0_DATA/.qpkg/Optware/share/plowshare/lib.sh: line 261: getopt: command not found /share/MD0_DATA/.qpkg/Optware/share/plowshare/lib.sh: line 46: --insecure: command not found Error: failed inside rapidshare_download()
這個腳本會在我的本地網絡,沒有從外部接入一起使用,所以我不擔心安全問題,我知道代碼看起來很基本的,原始的,但我沒有使用PHP,shell腳本的經驗,所以如果有人可以對此做任何意義,並幫助我將不勝感激。
Edit1。我也嘗試過shell_exec命令,但仍然沒有喜悅,如果我通過膩子作品精美地運行腳本。
Edit2。我認爲我們正在做點什麼。
我添加了您建議的代碼,並且收到以下消息。
sh: /share/MD0_DATA/.qpkg/Optware/share/plowshare: is a directory /usr/bin:/bin:/usr/sbin:/sbin
我想此刻的PATH是USR /斌:/ bin中:usr/sbin目錄:/ sbin目錄,我想這應該是的/ opt/bin中的/ opt/sbin目錄,因爲那裏是 「可執行文件」。任何ideeas?
謝謝, 克里斯。
你試過passthru()或system()嗎? – 2010-08-24 09:18:31
剛剛嘗試過他們,沒有運氣...甚至沒有生成錯誤代碼...我用system和passtrhu替換了exec命令(希望這是我想要的方式)...謝謝你答覆,保羅。 C. – Chris19 2010-08-24 10:10:45
如果可能的話,你應該使用Bash內建'getopts'而不是外部'getopt'。請參閱「getopts」一節[此處](http://mywiki.wooledge.org/BashFAQ/035)。 – 2010-08-24 15:05:07