Miałem awarię prądu, po przywróceniu przy próbie odpalenia skryptu mam coś takiego
root@viper:~# /usr/bin/ruby /home/konf/bin/monitoring/evio_ping.rb
Ignoring executable-hooks-1.3.2 because its extensions are not built. Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.2.7 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.2.7
Ignoring pg-0.19.0 because its extensions are not built. Try: gem pristine pg --version 0.19.0
/usr/local/lib/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- pg (LoadError)
from /usr/local/lib/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /home/konf/bin/monitoring/evio_ping.rb:6:in `<main>'
Oczywiście próbowałem tych komend z gem… Co się mogło zepsuć? skrypt doś prosty:
#!/usr/bin/env ruby
#encoding: utf-8
require 'net/ping'
require 'socket'
require 'pg'
conn = PG::Connection.open(user: 'konfigurator')
query = 'select id, ip from stb_evio order by ip'
res = conn.exec(query)
res.each do |row|
icmp = Net::Ping::ICMP.new(row['ip'], nil, 0.1)
if icmp.ping
q = "update stb_evio set active = 't', last_online = '#{Time.now}' where id=#{row['id']};"
else
q = "update stb_evio set active = 'f', last_offline = '#{Time.now}' where id=#{row['id']};"
end
conn.exec(q)
end