使用popen()在c程序中执行ssh命令

时间:2013-11-19 13:02:17

标签: c shell ssh popen ssh-keys

当我尝试使用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.

我也尝试过以这种方式调动内部""\" \"但它会挂起!

1 个答案:

答案 0 :(得分:1)

将ssh替换为/usr/bin/ssh,对sshfs等其他命令执行相同操作。指定命令的完整路径/usr/sbin/foo或任何情况。 popen不一定使用命令行中的相同shell来执行命令。检查您的文档。