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
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?
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