我需要从命令行通过 FTP 上传文件。我有以下信息:URL、用户名、密码、端口,以及我应该使用被动模式的事实。
根据此信息我该如何上传文件?
请注意,我必须通过脚本执行此操作,因此我需要能够自动输入此信息。
答案1
有许多 CLI(命令行)客户端。最常见的就是ftp
。您有<host>
、<port>
、<username>
和<pass>
“被动模式”。使用时ftp
您应该这样做:
ftp -p <host> <port>
-p
开关表示“使用被动模式”。然后会询问您的用户名和密码。登录成功后(服务器会通知您),您可以输入一些命令。输入help
并按“enter”键获取可用命令列表。您可以使用例如cd
、、ftp 命令来更改工作目录(在服务器上)、列出其内容并创建新目录。如果在运行之前您与要发送的文件位于同一目录中,则可以使用ls
或命令开始实际传输。第一个命令发送一个文件,第二个命令使用通配符发送多个文件(例如,将发送当前目录中的所有 pdf 文件)。要获取有关命令的简单帮助,您可以在应用程序内使用。我想这对初学者来说已经足够了。对于其余的用户,请使用或。要结束 ftp 会话,请输入。还有其他方法可以做到这一点,但我认为这一种方法很优雅 :)。mkdir
ftp
put
mput
mput *pdf
help <command>
ftp
man ftp
info ftp
bye
至于其他客户端,这里指出了一些有趣的选择,但我个人使用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