綾小路です。
'ftp://sources.redhat.com/pub/newlib/newlib-1.19.0.tar.gz'
を
1) HEAD -d
2) HEAD
3) wget --spider
4) wget
で試みたところ、以下のように、'HEAD -d' と 'wget --spider' では
異なる結果になりました。
存在するファイルへのリクエストなのに、
'HEAD -d' を使うと exit code != 0 となる点が問題ということですね。
これは 'HEAD -d' がリクエストに HTTP プロトコルを使っているのに対して、
'wget --spider' は FTP プロトコルを使っているからではないでしょうか。
FTP サーバに対して HTTP でリクエストを出しているため、
FTP サーバから応答がなく、タイムアウトで終了しているように見えます。
down load する前に、<URL/file> の正しさを check したいのですが、
良き方法があればご教示ください。
「<URL/file> の正しさを check したい」が
「<URL/file> が本当に存在するか確認したい」という意味ならば、
'curl --head' [1] を使ってみるのはいかがでしょうか。
これを使うことで、ファイルをダウンロードすることなく、
ファイルの存在確認をすることができます。
ただし、このやり方では実際にファイルをダウンロードできるか否かまではわかりません。
[1] http://curl.haxx.se/docs/manpage.html
CASE1. 存在するファイルへのリクエストは exit code = 0;
$ curl --head 'ftp://sources.redhat.com/pub/newlib/newlib-1.19.0.tar.gz'
Last-Modified: Fri, 17 Dec 2010 22:28:39 GMT
Content-Length: 14323667
Accept-ranges: bytes
$ echo $?
0
$ curl --head 'ftp://ftp.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2'
Last-Modified: Tue, 21 Jul 2015 15:00:09 GMT
Content-Length: 24163561
Accept-ranges: bytes
$ echo $?
0
$ touch hoge
$ curl --head 'file://hoge'
Content-Length: 0
Accept-ranges: bytes
Last-Modified: ***, ** *** *** **:**:** ***
$ echo $?
0
CASE2. 存在しないファイルへのリクエストは exit code != 0;
$ curl --head 'ftp://ftp.gnu.org/gnu/binutils/binutils-x.xx.x..tar.bz2'
curl: (19) Given file does not exist
$ echo $?
19
$ rm hoge
$ curl --head 'file://hoge'
curl: (37) Couldn't open file hoge
$ echo $?
37
$ curl --version
curl 7.38.0 (x86_64-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1k zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP
綾小路龍之介
--
AYANOKOUZI, Ryuunosuke <i38w7i3@xxxxxxxxxxx>