【发布时间】:2013-11-19 13:02:17
【问题描述】:
当我尝试使用 popen 执行此操作时,它会返回此错误,但当我在终端中运行此操作时,它可以工作!
popen("ssh -n -f *.*.*.* 'sshfs -o nonempty *.*.*.*:/home/foo/bar/ /foo1/foo2/foo3'", "r");
错误:
ssh_exchange_identification: Connection closed by remote host
我使用公钥和私钥在没有密码的情况下进行 ssh,并且它们可以正常工作,因为此命令在终端中完美运行。
我改成这样了:
popen("ssh -n -f *.*.*.* `sshfs -o nonempty *.*.*.*:/home/foo/bar/ /foo1/foo2/foo3`", "r");
它也会返回错误。
错误:
fuse: bad mount point `/foo1/foo2/foo3': No such file or directory
Cannot fork into background without a command to execute.
我也尝试以这种方式隐藏内部"":\" \",但它挂起!
【问题讨论】:
-
如果除了
*.*.*.*:/home/foo/bar/部分之外,省略单引号会怎样? -
澄清一下:
popen调用的第二个变体在本地执行sshfs ...的命令替换 - 将其输出传递给ssh命令并且它找不到安装目录 -而popen的第一个变体正在传递命令以在另一台服务器上执行。-f选项到ssh意味着-nBTW。尝试将-vv添加到ssh命令以进行更多调试。
标签: c shell ssh popen ssh-keys