使用ruby写了一个根据ftp服务器列表自动遍历所有服务器查找对应的东东

前在ftp上下载一个东西,需要查找很多ftp-server,累~今日学习ruby,使用ruby写了 一个对应给定的ftp_list和需要查找的东东,比如lost 越狱等,遍历ftp_list里面的所有服务器,如果找到,打印服务器名和对应的路径。不过感觉效率不是很好,高手完善一下
require "net/ftp"
class FTPDownload
def initialize(ip_address,user,pw,port=21)
puts ip_address.class,user,pw
@ip_address=ip_address
@user=user
@pw=pw
@port=port
end
def login?
begin
@ftp=Net::FTP.new(@ip_address)
@ftp.login(@user,@pw)
return true
rescue
return false
end
end
def find_wanted(re)
father_dir=""
array_list=[]
begin
array = @ftp.list
array.each do |file|
if re.match(file) != nil
puts @ftp.pwd
puts "match"
return true

else
if file[0]==100 #目录
str=file.split(//s*/s/)
if str[str.length-1] !="." && str[str.length-1]!=".."
new_dir = father_dir + "/" + str[str.length-1]
array_list << new_dir
end
end
end


end
next_dir=array_list.shift
father_dir=next_dir
begin
@ftp.chdir(next_dir)
rescue
"can not change directory"
end
end until array_list.empty?
end
def close
@ftp.close
end
end
ADD=[]
IO.foreach("ftpAddress") do|address|
addr=address.split("/s")
ADD << addr
end
re = Regexp.new("nfo")#需要查找的关键字
ADD.each do |addr|
printf addr[0], addr[1],addr[2]
ftp=FTPDownload.new(addr[0],addr[1],addr[2])
if ftp.login?
ftp.find_wanted(re)
ftp.close
else
puts "can not login"
end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值