文件阅读问题

时间:2011-05-03 18:48:24

标签: ruby io

f = File.open("/test/serverlist.txt", "r")
list = f.readlines
list.each do|servers|
  File.open('/test/results.txt','w') do |b|
  servers.each do |p|
    r = `ping -n 1 #{p}`
    b.puts r
  end
end

它读取serverlist文件,并返回一个字符串。 serverlist文件包含以下IP地址:

192.168.150.254
192.168.120.2

4 个答案:

答案 0 :(得分:2)

您是否希望从文件中读取每一行,然后执行此类操作。

fout = File.open('/test/results.txt','w')
File.open("/test/serverlist.txt", "r").each_line do |server|
   server.chomp!
   r = `ping -n 1 #{server}`
   fout.puts r
end

答案 1 :(得分:1)

我认为你不需要迭代服务器行本身,并且添加了一些样式mod并更改了ping(1)参数,我建议......

open 'serverlist.txt', 'r' do |f|
  open '/tmp/results.txt', 'w' do |b|
    f.readlines.each do |server|
      b.puts `ping -c 1 -t 1 #{server}`
    end
  end
end

答案 2 :(得分:0)

只需使用b.write代替b.puts

答案 3 :(得分:0)

如果您使用的是Linux,那么您可以选择

File.open("serverlist.txt").each { |addy| `echo "#{`ping -c 1 #{addy}`}" >> result.txt` }

并完成它

好吧..也许可以添加

`echo "# server-availability" > result.txt`

在上面一行之前,每次调用此文件时都会重置文件