2010-12-29 14 views
0

私はリモートマシン上でいくつかのコマンドを実行したいが、私は新しいサーバをインストールするつもりはない。 しかし、リモートマシン上で1つのファイルをプッシュすることが許可されています。トランスポート機構としてのsshd

これを行うにはlibssh2を使用しようとしていますが、私の代わりにコマンドを実行して両方向でSTDIN/STDOUT/STDERRをリダイレクトするようにsshdサーバに依頼することはできません。

私は、この例に見

http://www.libssh2.org/examples/ssh2.html

しかし、それは、SSHターミナルエミュレーションです。

誰でもlibssh2を使ってこれを実現する方法を知っています。

私のコマンドは長時間実行されており、STDINから入力を受け取り、STDOUTに出力します。

答えて

0

ストリームをリダイレクトするには、Cシステムコールパイプ()を使用します。この例では、プログラムからstdinをssh接続のstdinストリームにリダイレクトし、そのssh接続からstdoutストリームにstdoutすることができます。ここでは、親プロセスと子プロセスの間のパイピングを少し前に示した1337 ASCIIアートを紹介します。これは助けられるかもしれません(助けられないかもしれません):

 Parent  
     /\  
    /\  
    / \  
    stdin stdout 
    X  | 
    X  | 
    X  | 
    X  | 
    [0]  [1] 
    X  | 
    [R]  [W] 
    |E|  |R| 
    |A|  |I| 
    |D|  |T| 
    |I|  |I| 
    |N|  |N| 
    [G]  [G] 
    X  / 
    [1] [0] 
    X / 
     X/  
     X/  
     /X  
    /X  
    / X  
    / X  
    stdin stdout 
    \ / 
     \/  
     \/  
    Child 
+0

私はこれをマシン間で必要とします。 – Avinash

+0

概念は同じです。 – atx

関連する問題