sshd作为一种运输机制

时间:2010-12-29 07:13:14

标签: unix

我想在远程机器上运行一些命令,我​​不应该安装任何新服务器。 但是我被允许在远程机器上推送一个文件。

我正在尝试使用libssh2执行此操作,但我不知道如何让sshd服务器代表我运行命令并在两个方向上重定向STDIN / STDOUT / STDERR。

我调查了这个例子,

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

但它是ssh终端仿真。

任何人都知道如何使用libssh2实现这一目标。

我的命令长时间运行,从STDIN获取输入并在STDOUT上输出。

1 个答案:

答案 0 :(得分:0)

使用C系统调用管道()重定向流。在这种情况下,您需要将stdin从程序重定向到ssh连接的stdin流,并将stdout从该ssh连接重定向到程序的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