1

PC から言うと、SSH クライアントはコマンドを送信します (たとえば、私のプログラムのカスタム コマンド (「デバイスのリストを表示」) など)。私のLinux側では、SSH経由で送信されたこれらのコマンドを受信して​​実行するプログラムが必要です。

cLinux 側で実行されるプログラムを作成して、送信されたカスタム コマンドを解釈し、要件に従って処理しようとしています。これをどのように達成するかについての提案はありますか?

更新: ここには 2 つのプログラムがあります。ユーザーがコマンドを発行できるコマンド ライン インターフェイスを提供する、PC1 上で実行される最初のプログラム。2 番目のプログラムは、これらのコマンドを受信して​​処理する必要がある Linux 側 (PC2) にあります。現在、これらのコマンドを取得する方法について、2 番目のプログラムを考えています。

4

2 に答える 2

2

これは、少なくとも 2 つの異なる方法で行うことができます。

  1. ssh を介して C プログラム (クライアントなど) を実行し、コマンドを引数として送信します。クライアントは引数を解析し、何でもします。コマンドごとにクライアントを実行する必要があります。

  2. C プログラムは標準入力からコマンドを読み取るため、C プログラムを ssh 経由で 1 回実行し、コマンドを ssh にパイプします。

コマンドがあまり頻繁でない場合は、最初のコマンドを実行してください。バックグラウンドで ssh インスタンスを実行し、クライアント コマンドを並行して効果的に実行することもできます。順番にたくさんのコマンドがある場合は、2 番目の方法を実装します。最初の方法では各パラメーターが異なる引数として提供されるため、それらを並行して実行するのは難しく、コマンドを解析するのは比較的難しくなります。2 番目の方法では、コマンドごとに接続を確立してプロセスをフォークする必要がないため、頻繁に実行されるコマンドを処理する方がはるかに効率的かつ高速になります。

于 2013-01-01T06:34:37.577 に答える
0

これは実際には別のプログラムとの通信に関するものであり、sshとはほとんど関係がありません。sshは単なる「パイプワーク」であるため、必要なのは、アプリケーションへの2つのパイプ(1つはstdin用、もう1つはstdout用)を開くことです。たまたまssh]であり、stdinパイプに書き込み、stdoutパイプから読み取ります。通常の(ローカル)プログラムでこれを実行できる場合は、実行している行に「ssh」を追加するだけで完了です。

これが何を意味するのかわからない場合は、exec、popen、pipesなどを調べてください。

明らかに、もう一方の端にあるプログラムがそのstdinから読み取り、そのstdoutに書き込む必要があります。しかし、これは通常のコマンドラインプログラミングなので、大きな問題ではないと思います。

于 2013-01-01T11:44:59.670 に答える