0

PHPからUNIXサーバーに接続し、.exe(C言語)を実行しようとしています。以前はこの目的で phptelnet を使用していましたが、セキュリティ上の問題から phpseclib に移行する必要があります。phptelnet を使用すると、100% の成功率が得られました。PHPスクリプトの入力として引数を使用して、「C」プログラムなどの外部プログラムを実行できました。私が使用するphptelnetで

$telnet->DoCommand('cd public_html');
$telnet->DoCommand('cd abc');
$telnet->DoCommand('demo.exe');
$telnet->DoCommand("$inputs", $result);
echo $result;

これは完璧に機能します。しかし、今は phpseclib を使用しています。ssh 経由で UNIX サーバーに接続し、入力がプログラムにハードコーディングされているプログラムを実行できました。私は使っている

echo $ssh->exec('./demo.exe');

ここで問題は、プログラムに入力を提供する方法です。exec() を使用して引数を入力として受け入れるにはどうすればよいですか。たとえば、demo.exe は 2 つの数字を加算するプログラムです。そう言えますか

 echo $ssh->exec("./demo.exe, '10 20'");

また、exec() を使用して、1 回の実行で複数のコード行を実行するにはどうすればよいですか。私は少し混乱しています。これに関する情報は大歓迎です。

前もって感謝します。

4

1 に答える 1

0

使用するコマンドに複数のオプションがある場合:

 $ssh->exec("./demo.exe '10' '20'");

カンマを省略し、個々のパラメータをそれぞれ囲みます。または でリストを変換し$opts = implode(" ", array_map("escapeshellarg", $opts))ます。

SSH1 接続を使用している場合、一度に実行できるコマンドは 1 つだけです。Windows サーバーに接続している場合 (これは次のようになります)、2 つのコマンドを 1 行に並べることはできません。

使用できる BSD/Linux サーバーの場合のみ:

 $ssh->exec("cmd1 ; cmd2");
于 2010-08-25T15:31:45.143 に答える