我想在远程机器上运行一些命令,我不应该安装任何新服务器。 但是我被允许在远程机器上推送一个文件。
我正在尝试使用libssh2执行此操作,但我不知道如何让sshd服务器代表我运行命令并在两个方向上重定向STDIN / STDOUT / STDERR。
我调查了这个例子,
http://www.libssh2.org/examples/ssh2.html
但它是ssh终端仿真。
任何人都知道如何使用libssh2实现这一目标。
我的命令长时间运行,从STDIN获取输入并在STDOUT上输出。
答案 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