Web ベースのターミナルを構築し、シェル コマンドを実行したいと考えています。
jQueryターミナルライブラリを使用してコマンドをシェルに送信し、応答を出力するにはどうすればよいですか?
Web ベースのターミナルを構築し、シェル コマンドを実行したいと考えています。
jQueryターミナルライブラリを使用してコマンドをシェルに送信し、応答を出力するにはどうすればよいですか?
そのため、シェル コマンドを実行するには、サーバー コードが必要です。最も簡単な方法は、Apache と PHP を使用することです。そのためには、PHP スクリプトを作成し、シェル コマンドを実行できる関数の 1 つを使用する必要があります。
shell.php
<?php
if (isset($_POST['command'])) {
echo shell_exec($_POST['command']);
}
このサーバー側スクリプトを配置すると、jQuery ターミナルを使用して JavaScript コードを記述し、その PHP スクリプトに要求を送信して結果を表示できます。
$('body').terminal(function(command) {
return fetch('shell.php').then(res => res.text());
});
端末を改善するために他にできることは、ブラウザーでシェルによって生成される可能性のある ANSI エスケープ コードを表示する unix_formatting.js ファイルを使用することです。
<script src="https://cdn.jsdelivr.net/npm/jquery.terminal/js/unix_formatting.js"></script>
より高度な例を見たい場合は、以下をご覧ください。
1つのファイルとして作成されたjcubic/jsh.php、本物の端末のようなPHPシェル。unbuffer (GNU/Linux の expect パッケージの一部) やその他の bash トリックを使用して、すべてのコマンドの ANSI エスケープ コードを表示するなど、ユーザー フレンドリーにするためのいくつかのトリックを使用します。デフォルトでは、ls は出力を色で返しません。
さらに高度なものが必要な場合は、共有ホスティングでシェルへのアクセスを提供するために作成されたLeash Shellプロジェクトを見ることができます。
代替手段は次のとおりです。