2013-10-02 38 views
0

我正在使用PHP腳本,從HTML頁面獲取參數,並將它們發送到期望殼。使用期望從PHP的shell腳本只顯示產卵命令

當我把這個PHP從CLI它工作正常,但是當我從網頁調用它,它只能顯示第一行spawn ssh [email protected]

代碼:

#!/bin/sh 
var=$(expect -c " 
spawn ssh [email protected] 
expect \"password:\" 
send \"XXXX\r\" 
expect -re \"prompt>\" 
send \"./xx.sh $1 $2 $3\r\" 
expect -re \"prompt>\" 
send \"sleep 35\" 
expect -re \"prompt>\" 
send \"logout\" 
") 
echo "$var" 

回答

0

我建議你寫這作爲純粹的期待劇本。節約資源(無需額外的SH過程):

#/usr/bin/expect 
spawn ssh [email protected] 
expect "password:" 
send "XXXX\r" 
expect -re "prompt>" 
send "./xx.sh [join $argv]\r" 
expect -re "prompt>" 
send "sleep 35" 
expect -re "prompt>" 
send "logout" 

唯一的改變這裏的家當和[join $argv]。這將傳遞所有傳遞給此期望腳本的參數。

作爲下一個步驟,我建議認領之後加入符合

exp_internal 1 

。這將輸出更多,這有助於調試。

+0

您好,我試過,但還是同樣的resuls。我只看到sciprt的第一行:spwan ssh user @ host,就是這樣。當我從cli運行它的時候就OK了。 – user2131714

+0

我設法連接並運行腳本,但我只能看到一些結果,而不是全部,可能是什麼問題? – user2131714

+0

只是另一個問題:你怎麼稱呼劇本? –

0

我也有類似的問題,並添加以下到我的期望腳本固定它的結束:

expect eof 
exit