是否可以在终端中自动化FTP?


4

我想在我的crontab中添加一个FTP命令来自动下载文件。我该怎么做呢?


欢迎来到Mac的Unix奇迹:)
Pitto

你现在可以使用launchd而不是cron,因为它是官方苹果支持的调度程序。 Cron仍然有效,但推出的是未来之路:D
bringel

什么时候改变了?
daviesgeek

Answers:


5

更简单的方法是使用 wget的 。例如:

Ian-Cs-MacBook-Pro:ianc ian$ wget ftp://gnjilux.cc.fer.hr/welcome.msg
--2011-08-02 19:48:00--  ftp://gnjilux.cc.fer.hr/welcome.msg
           => `welcome.msg'
Resolving gnjilux.cc.fer.hr... 161.53.74.67
Connecting to gnjilux.cc.fer.hr|161.53.74.67|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD not needed.
==> SIZE welcome.msg ... 1462
==> PASV ... done.    ==> RETR welcome.msg ... done.
Length: 1462 (1.4K) (unauthoritative)

100% [======================================================================================================================================================================================================================================>] 1,462       --.-K/s   in 0s      

2011-08-02 19:48:03 (63.4 MB/s) - `welcome.msg' saved [1462]

wget 支持提供用户名的选项( - 用户 = 用户 )和密码( - 密码 = 密码 )如果匿名FTP访问不可用。还有一个 - 安静 这样的模式 cron 友好,并没有填写您的本地收件箱,没有成功下载的消息。


我在上一学年使用wget从我的教授那里自动下载笔记。因为我从来没有记得得到它们,所以我没有多次记笔记。
bringel

3

下面的BASH脚本将起作用

#!/bin/bash

remotefile="/path/to/ftp/server/file.png"
hostname="ftp.server.net"
username="ftpuser"
password="ftppass"
ftp -in $hostname<<EOF
quote USER $username
quote PASS $password

binary
get $remotefile $HOME/temp/file.png
quit
EOF

3

您可以使用已在Mac OSX下使用的curl,并且可以(对于非匿名ftp)使用存储在.netrc中的登录(因此密码不会显示在ps列表中)

普通香草匿名ftp

curl ftp://your.server.name/path/to/file.tar.gz > ~you/Downloads/file.tar.gz

使用.netrc

curl --netrc ftp://your.server.name/path/to/file.tar.gz > ~you/Downloads/file.tar.gz

直接指定用户/密码(之后在ps中可见)

curl --user "user:password" ftp://your.server.name/path/to/file.tar.gz > ~you/Downloads/file.tar.gz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.