因此,我正在制作一个脚本,该脚本在网络设备上运行ping,然后在设备离线时通过电子邮件提醒我。脚本运行完美!
但是我希望能够同时运行多个这些方法。这是三个方法(它们正在调用其他方法,因此请忽略它们)。
但是我希望能够同时运行所有循环方法。
def esxitest
loop do
test = system "ping -c 4 192.168.1.229"
puts test
if test == false
test2 = system "ping -c 4 192.168.1.229"
puts test2
if test2 == false
sendalert1
break
else
end
end
else test == true
sleep(10) #300
end
end
def proxytest
loop do
test = system "ping -c 4 192.168.1.226"
puts test
if test == false
test2 = system "ping -c 4 192.168.1.226"
puts test2
if test2 == false
sendalert2
break
else
end
end
else test == true
sleep(20) #300
end
end
def domaintest
loop do
test = system "ping -c 4 192.168.1.227"
puts test
if test == false
test2 = system "ping -c 4 192.168.1.227"
puts test2
if test2 == false
sendalert3
break
else
end
end
else test == true
sleep(30) #300
end
end
答案 0 :(得分:1)
当我第一次查看您的代码时,我有两个问题:
1)您如何看待这段代码,将每个监视作为其自己的进程启动会更容易吗?
2)我看到3个方法包含一个循环,为什么不将循环移到周围的方法上呢?
def do_tests
loop do
esxitest
proxytest
domaintest
sleep(10)
end
end
答案 1 :(得分:0)
您可以为此目的使用多线程。基本上,线程用于实现并行性。
在这里,https://www.tutorialspoint.com/ruby/ruby_multithreading.htm很好读