2013-10-09 67 views
0

我有一個期望的SSH腳本已經從運行PHP腳本的HTML頁面執行。 腳本運行正常,但我沒有看到它的所有輸出在ie屏幕上。 有什麼建議嗎?希望SSH腳本運行,但不顯示所有的輸出

#!/usr/bin/expect 

set timeout -1 
set max_match 10000 

set var1 [lindex $argv 0] 
set var2 [lindex $argv 1] 
set var3 [lindex $argv 2] 
set var4 [lindex $argv 3] 

spawn ssh -q -o StrictHostKeyChecking=no [email protected] 
expect "Password:" 
send "XXXX\r" 
expect -re "[email protected]>" 
send "[join $argv]\r" 
expect -re "]$" 
send "exit" 
interact 
+0

如果你是從網頁中調用它,你將如何進行交互?將'interact'改爲'expect eof' –

+0

你究竟看到了什麼以及與你想看到的有什麼不同? –

+0

我改變了期望eof,現在它繼續無休止地運行。當從cli運行它時,我會看到另一個服務器上運行的另一個腳本的所有輸出。當從網頁運行它時,我只能看到remotly腳本開始運行後的第一行,那就是它。 – user2131714

回答

0

使用phpseclib, a pure PHP SSH2 implementation ...

<?php 
include('Net/SSH2.php'); 

$ssh = new Net_SSH2('[email protected]'); 
if (!$ssh->login('user', 'XXXX')) { 
    exit('Login Failed'); 
} 

echo $ssh->read("[email protected]>"); 
$ssh->write("[join $argv]\r"); 
echo $ssh->read("]$"); 
$ssh->write("exit"); 
?> 

這是基於你的代碼。如果我是你,我會嘗試用\ n替換\ r,並且我會嘗試在退出後添加一個\ n。