2011-05-03 109 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` 

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