FTPからのダウンロード
30分プログラム、その88。
FTPからファイルをダウンロードするやつ。
#! /opt/local/bin/ruby -w # -*- mode:ruby enconding:utf-8 -*- # # ftp_get.rb - # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki <hiroki1124@gmail.com> # http://mzp.sakura.ne.jp/ # # Timestamp: 2007/07/23 08:53:59 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Ruby itself. # require 'net/ftp' host,username,password,*_= ARGV ftp = Net::FTP.new host,username,password ftp.passive = true ftp.chdir 'Logs' # 最新のログから7日前までを取得 ftp.nlst.reverse[0,7].each{|filename| puts filename begin ftp.get filename rescue => e puts "ERROR: #{e}skip #{filename}" end }
これだけだと対して、おもしろくないけど、id:mzp:20070722:ftpと組み併せると、FTPで「最近更新されたファイルは?」が実現できる。
#!/bin/sh #################### # setting #################### LOG_HOST=example.com LOG_USER=foo LOG_PASS=bar UP_HOST=example.com UP_USER=hoge UP_PASS=hage # clean rm -f *.log # get log file echo "get log file" ruby ftp_get.rb $LOG_HOST $LOG_USER $LOG_PASS # analyze echo "make ranking" ruby ftp_recently.rb *.log > updates.txt # upload echo "upload" ftp -n $UP_HOST <<EOF user $UP_USER $UP_PASS passive binary put updates.txt bye EOF