通过 Linux 命令行连接到 FTP

通过 Linux 命令行连接到 FTP

我需要从命令行通过 FTP 上传文件。我有以下信息:URL、用户名、密码、端口,以及我应该使用被动模式的事实。

根据此信息我该如何上传文件?

请注意,我必须通过脚本执行此操作,因此我需要能够自动输入此信息。

答案1

有许多 CLI(命令行)客户端。最常见的就是ftp。您有<host><port><username><pass>“被动模式”。使用时ftp您应该这样做:

ftp -p <host> <port>

-p开关表示“使用被动模式”。然后会询问您的用户名和密码。登录成功后(服务器会通知您),您可以输入一些命令。输入help并按“enter”键获取可用命令列表。您可以使用例如cd、、ftp 命令来更改工作目录(在服务器上)、列出其内容并创建新目录。如果在运行之前您与要发送的文件位于同一目录中,则可以使用ls或命令开始实际传输。第一个命令发送一个文件,第二个命令使用通配符发送多个文件(例如,将发送当前目录中的所有 pdf 文件)。要获取有关命令的简单帮助,您可以在应用程序内使用。我想这对初学者来说已经足够了。对于其余的用户,请使用或。要结束 ftp 会话,请输入。还有其他方法可以做到这一点,但我认为这一种方法很优雅 :)。mkdirftpputmputmput *pdfhelp <command>ftpman ftpinfo ftpbye

至于其他客户端,这里指出了一些有趣的选择,但我个人使用lftp。它只是可靠、良好、灵活且易于使用的 ftp 客户端。如果您更喜欢在命令行下使用更直观的方法,您可以选择mc或“Midnight Command”。它是使用 Norton Commander 范例的通用应用程序文件管理器,但也可以用于访问 ftp 服务器。

答案2

这个没问题。要旨。只需进入该网站并搜索“FTP 脚本”即可。

以下是我发现的一个:

#!/bin/sh

HOST='some.ftp.server'
USER='myuser'
PASSWD='mypass'
FILE='myfile'

ftp -n $HOST <<END_SCRIPT
user ${USER} ${PASSWD}
cd /path/to/something
get $FILE
quit
END_SCRIPT

exit 0

还,命令行 Foo是另一个不错的网站,我在那里找到了一个非常棒的 ftp-ish 文件传输示例:

Create a file server, listening in port 7000:

while true; do nc -l 7000 | tar -xvf -; done

Then, at client side:

tar c myfile | nc localhost 7000 ##Send file myfile to server
tar c mydir | nc localhost 7000 ## Send directory mydir to server

答案3

我强烈推荐FTP服务器ncfpput命令。它非常适合编写脚本,并且对于这类事情来说非常方便。

相关内容