1

cron ジョブで RPI で実行したい非常に小さなプログラムを書いています。1 時間ごとに、Web ページのステータスを確認したいと考えています。ステータスが特定の基準を満たしている場合は、メールで送信してもらいたいです。

過去に gmail gem を使用して成功しましたが、常に資格情報を提供する必要がありました。Gmail の資格情報をファイルに保存することに神経質になっています。このタスクをより安全に達成する方法を知っている人はいますか?

最終的な目標は、監視している Web サイトでゲートのステータスが変更されたことを通知するメールを受信トレイに受け取ることです。

これが私がこれまでに持っているものです

#!/usr/bin/ruby
require 'open-uri'
require 'nokogiri'


def check_gates
    doc = Nokogiri::HTML(open('http://www.summitatsnoqualmie.com/Mountains/Grooming-Report'))
    gates = {}

    table_rows = doc.xpath('//tr')

    sections = []

    sections.push({:gate => "Elevator", :data => table_rows.select { |tr| tr.inspect.include? "Lower Traverse" }.first})
    sections.push({:gate => "Nash", :data => table_rows.select { |tr| tr.inspect.include? "Upper Traverse" }.first})

    sections.each do |section|
        status_text =  section[:data].element_children.select { |child| child.inspect.include? "grooming_open_status" }.first.inspect
        match = status_text.match(/background-position:\ (\d+)px\ (.\d)+px/)

        gate_down = false

        unless match.nil?
            gate_down = match[1].to_i == 0 and match[2].to_i == 0
        end

        gates[section[:gate]] = gate_down ? "CLOSED" : "OPEN"

    end

    gates
end
4

1 に答える 1