쉘 스크립트에서 SFTP 사용

쉘 스크립트에서 SFTP 사용

다른 UNIX 서버에서 파일을 가져오기 위해 쉘 스크립트를 작성했습니다. 하지만 파일은 복사되지 않습니다. 누구든지 내가 뭘 잘못하고 있는지 도와줄 수 있나요?

sftp username@server:$path
get ubpbilp* ./
mget cust.cmp* bunc.cmp* ./
echo "Your files are copied."

답변1

어쩌면 다음과 같은 것일 수도 있습니다.

sftp username@server <<EOT
cd $path
get ubpbilp*
get cust.cmp* 
get bunc.cmp*
quit
EOT

sftp가 이를 지원하지 않기 때문입니다 mget.

답변2

다른 사람들이 말했듯 get이 명령을 에 입력으로 전달 해야 합니다 sftp.여기 문서. 또한 명령이 sftp없습니다 mget.

sftp "username@server:$path" <<'EOF'
get ubpbilp* ./
get cust.cmp* ./
get bunc.cmp* ./
EOF

SFTP는 스크립트 작성이 그리 편리하지 않습니다. 서버가 scp를 허용한다면 scp를 사용하세요. 일부 파일만 복사하려는 경우에는 훨씬 더 쉽습니다. scp명령줄에서 패턴을 전달할 수 있습니다 . 로컬 쉘이 아닌 원격 측에서 확장되도록 인용하십시오. 마지막으로 .표시된 대상이 현재 디렉터리라는 점을 잊지 마세요 .

scp -p \
  "username@server:$path/ubpbilp*" \
  "username@server:$path/cust.cmp*" \
  "username@server:$path/bunc.cmp*" \
  .

파일 복사 이상의 작업이 필요한 경우 다음을 설치하세요.SSHFS, 가능하다면. SSHFS는 일반적인 파일 시스템 메커니즘을 통해 원격 파일에 대한 액세스를 제공합니다. 내부적으로 SFTP를 사용하므로 서버가 SFTP를 허용하는 경우 컴퓨터가 클라이언트에서 허용하는 경우 SSHFS를 사용할 수 있습니다.퓨즈.

mkdir server-dir
trap 'fusermount -u server-dir; rmdir server-dir' 0 HUP INT TERM
sshfs "username@server:$path" server-dir
cp -p server-dir/ubpbilp* cust.cmp* bunc.cmp* .

관련 정보