2011-05-03 110 views
0
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 
+0

你probleme上述前行不清晰!告诉我们输入的内容 – Dinatih 2011-05-03 18:54:07

+0

我想将ping的结果输出到文件。我试图使用服务器列表内容)IP地址作为服务器来ping – rahrahruby 2011-05-03 18:57:34

+0

请不要让我们猜测是什么错误。花时间清楚地解释你想要你的代码做什么,以及为什么它没有做到这一点。 – 2011-05-04 00:11:52

回答

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 
+0

谢谢,那个窍门 – rahrahruby 2011-05-03 19:09:40

+0

fout应该关闭。 – steenslag 2011-05-03 21:12:15

0

只需使用b.write到位b.puts

1

我不认为你会需要遍历服务器线本身,以及与一些风格MODS的加入和中国平安(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 
0

如果你使用Linux,你可以只是去

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

,并用它

做得很好..也许加

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

所以文件被每次重新调用此