使用 ssh 从 Ubuntu 到 Windows 自动列出文件(Openssh)

使用 ssh 从 Ubuntu 到 Windows 自动列出文件(Openssh)

我正在用 C 语言编写一些自动化 API,通过 SSH 与远程文件系统一起使用。

主机运行 Ubuntu-Linux,其中一台目标计算机运行安装了 OpenSSH 的 Windows 7。

我遇到问题的具体功能是列出远程 Windows 系统中的文件。特别是那些名称中带有空格的文件和文件夹。例如:“Foo BAR”

我的命令的格式如下

sshpass -p [pwd] ssh [account]@[ip_addr] dir PATH

如果我做:

sshpass -p [pwd] ssh -v [account]@[ip_addr] dir C:\"FOO BAR"

使用详细(-v)选项,它给我以下响应(片段):

debug1: Sending command: dir C:"Foo BAR
  Volume in drive C has no label.
  ...
File Not Found

如果我做:

sshpass -p [pwd] ssh -v [account]@[ip_addr] dir C:\\\"FOO BAR\"

它返回:

debug1: Sending command: dir C:\\"FOO BAR"
  Volume in drive C has no labe.
  ...
File Not Found

当我通过自动化运行它时,它将返回:

sh: 1: Syntax error: Unterminated quoted string

我的 API 非常适合那些中间没有空格的文件名。似乎对 Windows 系统发送命令有限制。有什么想法如何解决这个问题吗?

谢谢!

11/14 更新:

谢谢回复沃克!我不知道这个 SSHFS,先尝试一下。

按照您提供的链接,在此步骤中:

sudo sshfs -o allow_other,defer_permissions [email protected]:/ /mnt/droplet

我收到以下错误:

fuse: unknown option `defer_permissions`

询问google后,我将其更改为:

sudo sshfs -o allow_other,default_permissions [email protected]:/ /mnt/droplet

然后我遇到了以下错误:

read: Connection reset by peer

我遵循了这个对等方使用 sshfs 重置连接并做了:

sudo usermod -a -G fuse [my_user_name]

但我仍然遇到同样的问题,有什么想法吗?

答案1

为了避免引用问题,您可以以 base64 传递参数并在 Linux 服务器上对其进行解码。

但是为什么要在有 SSHFS 的地方创建自己的 api 呢?请参阅以下链接寻求帮助

https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh

相关内容