如何定期监控sketchup ruby​​插件中的url?

时间:2013-11-05 03:22:32

标签: ruby ping sketchup

我尝试定期监控sketchup ruby​​插件中的url ..

我搜索一些代码来执行此功能:

require 'ping' 
def every_n_seconds(n) 
    loop do 
        before= Time.now 
        yield 
        interval=n-(Time.now-before) 
        sleep(interval) if interval>0 
    end 
end 
every_n_seconds(50) do 
   pingresult=Ping.pingecho("www.google.com") 
   puts pingresult 
   if pingresult="true" 
        puts "t" 
    else 
        puts "f!" 
    end 
end

但在第一行,我收到错误:

  

LoadError:C:/ Program Files(x86)/ SketchUp / SketchUp   2013 / Plugins / xxx.rb:3:在`require'中:没有要加载的文件 -   平

我想找到ping类库但我找不到任何东西..

所以我可以找到ping类或

有没有其他方法可以实现这个功能?

1 个答案:

答案 0 :(得分:1)

自己运行 ping 有什么问题?

`ping -c 1 www.google.com`
if $?.exitstatus == 0
  puts "t"
else
  puts "f"
end

或者,甚至更好:

def ping(url)
  `ping -c 4 #{url}`
  $?.exitstatus == 0
end

if ping("www.google.com")
  puts "t"
else
  puts "f"
end

在单独的线程上运行:

def ping(url)
  `ping -c 4 #{url}`
  $?.exitstatus == 0
end

def every_n_seconds(n)
  loop do
    before= Time.now
    yield
    interval=n-(Time.now-before)
    sleep(interval) if interval>0
  end
end

ping_thread = Thread.new {
  every_n_seconds(50) do
    pingresult=ping("google.com")
    puts pingresult
    if pingresult
      puts "t"
    else
      puts "f!"
    end
  end
}

puts "Doing other things now..."

ping_thread.join()