[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:57889] Re: How bash script can know wget result ? again



綾小路です。

> '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>

Attachment: pgpzjUPl3JUvk.pgp
Description: OpenPGP Digital Signature