1

こんにちは、Phpseclib を使用して専用サーバーに接続し、画面プロセスに接続し、画面プロセス内でコマンドを実行して結果を返そうとしています。

私はphpをサーバーに接続することができ、画面プロセスに再接続すると思いますが、エコーバックしようとするコマンドは、期待したものではなく「1」を返します。

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . '.././static/classes/phpseclib');

include('.././static/classes/phpseclib/Net/SFTP.php');

//SSH Run Command
$ssh = new Net_SSH2($host);
if (!$ssh->login($user,$pass)) {
    exit('Login Failed SSH');
}

//Run the server
echo 'Attaching to screen process...';
$ssh->exec('screen -r server1');
echo 'Attached';
echo $ssh->write('status\n');
?>

誰かが私の問題に光を当てることができれば、私はそれを感謝します.

また、このように接続している理由は、接続しているSRCDSサーバーであり、phpスクリプトを使用してsrcdsゲームサーバーにクエリを実行できるためですが、ポートをブロックする共有Webホスティングを使用しているため、機能しませんにソケット接続する必要があります。

4

1 に答える 1

0

$ssh->write("screen -r server1\n")おそらく代わりに行う必要があります$ssh->exec('screen -r server1');

の問題exec()は、常に新しいチャネルでコマンドを実行することです。これは phpseclib の問題ではなく、SSH プロトコルの問題です。パテを介して「screen -r server1」を実行し、パテを閉じ、パテを再度開き、「ステータス」を実行して、必要なものが出力されることを期待するようなものです。それはしません。

于 2012-04-02T04:06:05.153 に答える