Automatize arquivos de lista com o ssh do Ubuntu para o Windows (Openssh)

0

Estou escrevendo alguma API de automação em C trabalhando com o sistema de arquivos remoto via SSH.

O host está executando o Ubuntu-Linux e uma das máquinas de destino está executando o Windows 7 com o OpenSSH instalado.

A função específica com a qual estou tendo problemas é listar os arquivos no sistema Windows remoto. Em particular, esses arquivos e pastas com espaço em seus nomes. Por exemplo: "Foo BAR"

O formato do meu comando ficou assim

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

Se eu fizer:

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

Com a opção verbose (-v), ela me fornece a seguinte resposta (snippet):

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

Se eu fizer:

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

Ele retorna:

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

Quando eu o executo por meio da automação, ele retornará:

sh: 1: Syntax error: Unterminated quoted string

Minha API funciona perfeitamente para esses nomes de arquivos sem espaços intermediários. Parece uma limitação enviar comandos como tal para o sistema Windows. Alguma idéia de como resolver isso?

Obrigado!

Atualização 11/14:

Obrigado pela resposta warl0ck ! Eu não estava ciente deste SSHFS, vou tentar primeiro.

Seguindo o link fornecido, durante esta etapa:

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

Eu recebi o seguinte erro:

fuse: unknown option 'defer_permissions'

Depois de perguntar ao Google, eu mudei para:

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

Então eu encontrei o seguinte erro:

read: Connection reset by peer

Eu segui este Conexão redefinida pelo peer usando sshfs e fez:

sudo usermod -a -G fuse [my_user_name]

Mas ainda tenho os mesmos problemas, alguma ideia?

    
por ObigOne 14.11.2016 / 06:35

1 resposta

0

Para evitar problemas de citação, você pode passar argumentos em base64 e decodificá-los no servidor linux.

Mas por que criar sua própria API onde há SSHFS? veja o seguinte link para ajuda

link

    
por 14.11.2016 / 06:46