자동화된 파이프라인 프로세스의 일부로 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
이것답변통과표시프로세스를 마무리하기 위해 간단한 스크립트를 작성하라는 지시를 받았지만 본질적으로 스크립트에서 수행한 작업은 다음과 같습니다.
put {local} {remote}
업로드할 파일에 대한 명령으로 배치 파일을 생성합니다.- 다음 명령을 실행하십시오.
sftp -b {batch_file} -i {identity_file} -o StrictHostKeyChecking=no {username}@{hostname}
명령은 사용자의 입력 없이 실행되며 성공 여부를 확인하기 위한 오류 코드가 표시됩니다.
나는 단지 미래의 방문자들을 위해 이 답변을 더 완전한 형태로 여기에 포함시키고 싶었습니다.