检查FTP服务器上的文件是否可用

时间:2017-04-13 09:55:01

标签: linux bash unix ftp wget

我需要检查并查看某个文件是否可以在FTP服务器上下载。我一直在使用wget的--spider选项来实现这一点,但这只适用于404错误,FTP不使用。

当前代码(不工作):

file1="12345.tar"
abc1="http://some.website/data/${file1}"

if wget --no-cache --spider --user=username --password='password' ${abc1} >/dev/null 2>&1; then
echo "File ${abc1} exists. Let's get it!"
bash run.sh
else
echo "File ${abc1} doesn't exist. Exiting script..."
exit 0
fi

如何检查(“蜘蛛”)以查看FTP服务器上是否有可用的文件?我知道FTP的“404”版本是550(没有这样的文件或目录)。

2 个答案:

答案 0 :(得分:1)

适用于FTP

响应代码:为新用户准备的服务(220)

响应代码:150这是目录列表/打开二进制数据连接

对于HTTP

用HTTP / 1.1 200 OK替换220或150

#!/bin/bash

url="ftp://path/to/some/file.something"

function validate_url(){

    if [[ `wget -S --spider $url 2>&1 | grep '150'` ]]; then exit_status=$?; fi
    if [[ $exit_status == 0 ]]; then
            echo "FTP location exists"
    elif [[ $exist_status == 1 ]]; then
            echo "FTP location not available"
    fi
}

validate_url

答案 1 :(得分:0)

这是我能够工作的原因:

file1="12345.tar"
abc1="http://some.website/data/${file1}"

check=`wget --no-cache --spider --user=username --password='password' ${abc1} 2>&1 | awk '{print $1}' | head -n 24 | tail -1`

if [ ${check} -eq "No" ]; then
echo "File ${abc1} doesn't exist. Exiting script..."
exit 0
else
echo "File exists!"
fi