SFTP 배치 모드로 업로드

SFTP 배치 모드로 업로드

자동화된 파이프라인 프로세스의 일부로 SFTP 서버에 파일을 업로드해야 합니다.할 수 없다인터렉티브). SSH 접근 권한이 없어서할 수 없다scp나 rsync를 사용하세요.

나는 사용하여 약간의 성공을 거두었습니다.이 답변에서 제안된 솔루션:

sftp user@server <<EOF
put localPath remotePath
EOF

그러나 실패해도 아무런 징후가 없기 때문에 더 안정적인 것을 찾고 있습니다. 예를 들어 SFTP 서버에서 다운로드하려면 다음 구문을 사용할 수 있습니다.

sftp user@server:remotePath localPath

업로드에 상응하는 전단지가 있습니까?

답변1

sftp의 "배치 모드"를 사용할 수 있습니다. 매뉴얼에서:

> -b batchfile
>              Batch mode reads a series of commands from an input batchfile instead of stdin.  Since it lacks user interaction it
>              should be used in conjunction with non-interactive authentication.  A batchfile of ‘-’ may be used to indicate
>              standard input.  sftp will abort if any of the following commands fail: get, put, reget, reput, rename, ln, rm,
>              mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink, and lmkdir.  Termination on error can be sup‐
>              pressed on a command by command basis by prefixing the command with a ‘-’ character (for example, -rm /tmp/blah*).

즉, 명령을 사용하여 임시 파일을 만들고 "sftp -b tempfile user@server"를 사용하여 파일에서 명령을 실행합니다.

이러한 유형의 작업을 수행하는 다른 도구(예: lftp)가 있습니다.

답변2

이것답변통과표시프로세스를 마무리하기 위해 간단한 스크립트를 작성하라는 지시를 받았지만 본질적으로 스크립트에서 수행한 작업은 다음과 같습니다.

  1. put {local} {remote}업로드할 파일에 대한 명령으로 배치 파일을 생성합니다.
  2. 다음 명령을 실행하십시오.

sftp -b {batch_file} -i {identity_file} -o StrictHostKeyChecking=no {username}@{hostname}

명령은 사용자의 입력 없이 실행되며 성공 여부를 확인하기 위한 오류 코드가 표시됩니다.

나는 단지 미래의 방문자들을 위해 이 답변을 더 완전한 형태로 여기에 포함시키고 싶었습니다.

관련 정보