我需要检查并查看某个文件是否可以在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(没有这样的文件或目录)。
答案 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