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

标签 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.

我还尝试以这种方式转义内部 "" :\"\" 但它挂起!

最佳答案

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

关于c - 使用popen()在c程序中执行ssh命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20072286/

相关文章:

c - 为什么一个函数可以返回一个由 malloc 设置的数组而不是一个由 "int cat[3] = {0,0,0};"设置的数组

shell - 需要使用批处理/Windows 命令行枚举未知的注册表项

javascript - 没有 GUI 的带有 Javascript 的 SSH

c - 使用指针从循环数组中弹出

c - 程序在代码块上运行并且停止后

c - 如何通过从 ini 文件中提取值来更新指针的值?

ssh - 是否可以通过ssh使用OpenCL?

unix - 通过 SSH 的 SSH 无密码登录

c - fscanf 在尝试扫描文本文件的其余部分时使程序崩溃

Bash 脚本 : No such file or directory when defining variable via source vars. txt