编写 FTP 传输脚本

use*_*454 7 shell ftp shell-script

有没有办法shebang-ify ftp并编写小的FTP脚本?

例如:

#!/usr/bin/ftp
open 192.168.1.1
put *.gz
quit
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Gil*_*il' 10

不是ftp我遇到的程序,因为他们希望在他们的标准输入上有一个脚本,但是shebang会在他们的命令行上传递脚本名称。

您可以使用here 文档ftp通过 shell 包装器传递脚本。

#!/bin/sh
ftp <<EOF
open 192.168.1.1
put *.gz
EOF
Run Code Online (Sandbox Code Playgroud)

Lftp接受作为参数传递的脚本名称。

#!/usr/bin/lftp -f
open 192.168.1.1
put *.gz
Run Code Online (Sandbox Code Playgroud)

Ncftp带有两个工具ncftpgetncftpput用于简单的批量获取或放置。

Zsh包括一个FTP 模块。使用适当的 shell 而不是直接的 FTP 脚本的优点是您可以对故障做出反应。

#!/bin/zsh
zmodload zsh/zftp
open 192.168.1.1
put *.gz
Run Code Online (Sandbox Code Playgroud)

当然,您还可以使用许多其他语言:Perl、Python、Ruby 等。

另一种方法是将FTP服务器挂载为一个目录,然后使用cprsync或其他工具)复制文件。有许多用于 FTP 访问的FUSE文件系统,主要是CurlFtpFSLftpFS

请注意,如果您打算使用身份验证(可能是上传),并且您可以控制服务器,那么最好使用 SSH 访问。它更安全,更灵活。要通过 SSH 复制文件,您可以使用scpsftprsync进行高效同步(如果某些文件可能已经存在)或Unison(用于双向同步),或使用SshFS挂载。