`
luotuoass
  • 浏览: 641068 次
文章分类
社区版块
存档分类
最新评论

使用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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics