SSH를 통해 원격 파일 시스템을 사용하기 위해 C로 자동화 API를 작성 중입니다.
호스트 컴퓨터는 Ubuntu-Linux를 실행하고 대상 컴퓨터 중 하나는 OpenSSH가 설치된 Windows 7을 실행합니다.
제가 겪고 있는 특정 기능은 원격 Windows 시스템에 파일을 나열하는 것입니다. 특히 이름에 공백이 있는 파일과 폴더는 더욱 그렇습니다. 예: "푸 바"
내 명령의 형식은 다음과 같습니다
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를 만드는 이유는 무엇입니까? 도움이 필요하시면 아래 링크를 참조하세요