Elv*_*vin 10 sftp shell-script
我想将文件从我的 Linux 服务器上传到某个 FTP 服务器。我知道我们使用put和get命令来上传和下载文件以及sftp连接到FTP服务器的命令。
但我想在一个 shell 脚本中完成所有这些,我不知道如何使用sftp某个脚本中的命令连接到 FTP以上传某个文件。这是我所知道的,但我不知道它将如何在一个 sh 脚本中工作。
sftp -v -oIdentityFile=path user@server
put localPath ftpPath
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
Gil*_*il' 20
sftp是一个shell命令。它在其标准输入上读取 SFTP 命令。
您可以使用here 文档将输入传递给命令。
sftp -v -oIdentityFile=path user@server <<EOF
put localPath ftpPath
EOF
Run Code Online (Sandbox Code Playgroud)
您可以在 here 文档中使用变量。
local_path=/path/to/local/file
remote_path=/somewhere/or/other
sftp -v -oIdentityFile=path user@server <<EOF
put $local_path $remote_path
EOF
Run Code Online (Sandbox Code Playgroud)
这不是复制文件的最简单方法。SFTP 允许您浏览和传输文件,但也有一个 shell 命令可以直接复制一个文件(甚至递归地复制一个目录)。
scp -o IdentityFile=path localPath user@server:remotePath
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用该-b选项指定批处理文件。
-b batchfile
Run Code Online (Sandbox Code Playgroud)
摘自 sftp 手册页:
批处理模式从输入批处理文件而不是标准输入中读取一系列命令。由于它缺乏用户交互,因此应与非交互式身份验证结合使用。“-”的批处理文件可用于指示标准输入。如果以下任何命令失败,sftp 将中止:get、put、rename、ln、rm、mkdir、chdir、ls、lchdir、chmod、chown、chgrp、lpwd、df、symlink 和 lmkdir。通过在命令前加上“-”字符(例如,-rm /tmp/blah*),可以逐个命令地禁止错误终止。
小智 0
SFTP程序使用ssh协议来访问、管理和传输文件到远程系统。它使用不同的协议来传输文件。用户名和数据传输在通信过程中被加密。您无法使用 ftp 客户端连接到 sftp 服务器,也无法使用 sftp 客户端连接到仅支持 ftp 的 ftp 服务器。