我試圖編寫一個實況控制檯/終端。 對於我使用phpseclib庫,起初我包括所有的東西&登錄:phpseclib實況控制檯/終端使用AJAX
use phpseclib\Net\SSH2;
include('vendor/autoload.php');
$ssh = new SSH2('127.0.0.1');
if(!$ssh->login('user', 'pass')) {
exit('Login Failed');
}
$ssh->setTimeout(1);
後,我檢查了一個Ajax請求(讀顯示,寫用於執行):
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
if($_POST['request'] == 'read') {
echo $ssh->read();
} elseif($_POST['request'] == 'write') {
$ssh->write($_POST['command']."\n");
echo $ssh->read();
}
exit();
}
HTML標記:
<textarea readonly>...</textarea>
<div>
<input type="text" placeholder="Command">
<button>
Do it
</button>
</div>
一些jQuery的:
$('div button').click(function(e) {
$('div button').text('Loading...');
e.preventDefault();
$.ajax({
type: 'POST',
url: 'index.php',
data: {
request: 'write',
command: $('div input').val()
},
success: function(data) {
$('textarea').append(data);
$('textarea').scrollTop($('textarea')[0].scrollHeight - $('textarea').height());
$('div input').val('');
$('div button').text('Do it');
}
});
});
的問題(一個或多個) 每次我要求CMD與寫()它會顯示Debian的登錄信息(時間,如果我更改使用CD當前目錄之後,我使用ls它重置 - 因爲我認爲新的登錄),也不知道如何創建一個間隔,所以我得到當前輸出不斷 - 前如果我ping一個網站。試過了。像這樣:
setInterval(function() {
$.ajax({
type: 'POST',
url: 'index.php',
data: {
request: 'read'
},
success: function(data) {
$('textarea').append(data);
$('textarea').scrollTop($('textarea')[0].scrollHeight - $('textarea').height());
}
});
}, 300);
我很感激任何幫助!
看起來像是交叉發佈到https://github.com/phpseclib/phpseclib/issues/1124? – neubert
@neubert是的,但只有一些鏈接,到目前爲止我可以使用:/ – Aaroniker
你還在搞這個嗎? –