Bash脚本下载ftp文件

时间:2016-02-16 01:02:16

标签: macos bash ftp wget

我写了一个bash脚本来从FTP服务器下载文件。

#!/bin/bash
screen /usr/local/bin/wget ftp://user:passwd@IP:/Folder/*

当我手动运行此脚本时,它可以工作,但是当我尝试将其设置为使用cron作业自动执行时,它无法正常工作。

的Cron:

00 17 * * * /Users/user/.Scripts/test.sh

知道为什么这不起作用吗?

我继续收到这封邮件

X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=user>
X-Cron-Env: <USER=user>
X-Cron-Env: <HOME=/Users/user>
Date: Mon, 15 Feb 2016 19:12:00 -0600 (CST)

Must be connected to a terminal.

我只是试着用sh和那封邮件就是我得到的。

1 个答案:

答案 0 :(得分:0)

将您的脚本更改为:

#!/bin/bash

SCREEN_OPTS=""
DOWNLOAD_DIR="."

if [[ ! -t 1 ]]; then
    SCREEN_OPTS="-d -m"
    DOWNLOAD_DIR="/path/to/save/files"
fi


screen $SCREEN_OPTS /usr/local/bin/wget --directory-prefix="$DOWNLOAD_DIR" ftp://user:passwd@IP:/Folder/*

这样,如果从cron运行,screen将以分离模式运行,而不需要终端。

如果脚本从终端运行,[[ -t 1 ]]测试表达式将返回true(0)。

您还需要为wget指定一个输出目录,否则它只会保存到cron的工作目录。