Sftp

上傳到 sftp 批處理模式

  • August 13, 2019

作為自動化管道過程的一部分,我需要將文件上傳到 SFTP 伺服器(因此不能互動)。我沒有 ssh 訪問權限,所以我不能使用 scp 或 rsync。

使用此答案中提出的解決方案,我取得了一些成功:

sftp user@server <<EOF
put localPath remotePath
EOF

但是,我正在尋找更可靠的東西,因為如果失敗,我將沒有任何跡象。例如,如果我想從 SFTP 伺服器下載,我可以使用以下語法:

sftp user@server:remotePath localPath

是否有等效的單線上傳?

您可以使用 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

引用自:https://unix.stackexchange.com/questions/441254