狐の王国


2008年04月17日(木) [過去の今日]

#1 VMware Server の取得とMD5チェックが面倒なのでrubyで自動化してみた

vmwareのページにあるmd5値が見にくくてしょうがないので、めんどうだから自動化してしまった。perlでやったほうが早く作れそうだったけど、ruby脳作成中なのでrubyで。

ダウンロードページのHTMLを標準入力から読んでもげってる。fetchメソッドはrubyのリファレンスマニュアルにあったやつのコピペ。

#/usr/bin/ruby
require 'hpricot'
require 'kconv'
require 'digest/md5'
require 'uri'
require 'net/http'

Net::HTTP.version_1_2

def fetch( uri_str, limit = 10 )
  raise ArgumentError, 'http redirect too deep' if limit == 0

  response = Net::HTTP.get_response(URI.parse(uri_str))
  case response
  when Net::HTTPSuccess     then response
  when Net::HTTPRedirection then fetch(response['location'], limit - 1)
  else
    response.error!
  end
end

doc = Hpricot(STDIN.read.toutf8)
list = (doc/"td span a")

list.each do |l|
  url = l[:href]
  filename = File.basename l[:href]
  md5 = l.next_node.next_node.next_node.to_s.sub(/^.md5sum: (.*).$/, '\1');

  res = fetch(url)
  open(filename, "wb") do |f|
    f.write res.body
  end

  real_md5 = Digest::MD5.hexdigest(File.open(filename).read)

  puts filename
  printf("md5 : %s\n", md5)
  printf("real: %s\n", real_md5)

  if (md5 == real_md5)
    puts 'valid!'
  else
    puts 'invalid!'
  end
end

つぎのバージョンアップ時も使えるといいな……。

(@465)

この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ