Bash 用于下载 ftp 个文件的脚本

Bash Script to download ftp files

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

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

当我 运行 这个脚本手动工作时,它可以工作,但是当我尝试将它设置为使用 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,我收到的就是那封邮件。

将您的脚本更改为:

#!/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/*

这样,如果 运行ning 来自 cronscreen 将 运行 处于分离模式,并且不需要终端。

如果脚本 运行来自终端,[[ -t 1 ]] 测试表达式将 return 为真 (0)。

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