在Ruby中使用mailx shell命令发送邮件

时间:2016-06-29 12:36:13

标签: ruby shell email

我的ruby脚本需要一些帮助。我有这样的代码:

#!/usr/bin/ruby

require 'rubygems'
require 'json'
require 'date'

system 'curl https://xxx/yyy/zzz --cacert xxx.pem --cert xxx.pem --key xxx.pem >> hosts.txt'

document = JSON.load File.new("hosts.txt")
file = JSON.load File.new("admins.txt")
new_file = File.open("newfile.txt", "w")
personal_data = file['admins'].group_by { |e| e.delete('name') }

dupa = []
document['results'].map do |h|
  dupa << h.merge(personal_data[h['name']].first) if personal_data[h['name']]
end

#puts dupa
dupa.each do |a|
  if a["global_status_label"] != "OK"

       last_report = a["last_report"].to_s
       last_report = last_report[0..9]
       date_last_report = Date.parse last_report
       current_Date = Date.today
       difference_dates = (current_Date - date_last_report).to_i
                if difference_dates > 5
                        new_file.puts "#{a['name']}\t #{difference_dates}"
                end
    end
end
new_file.close

一切正常,但我需要使用shell命令mailx / mail发送包含一些信息的邮件。我知道如何在Ruby中执行shell命令,如果我只想发送邮件就不会有问题,但是我必须创建包含数据new_file.puts "#{a['name']}\t #{difference_dates}"的新文件,然后通过电子邮件发送。是否有可能将诸如['name']或difference_dates或任何elese之类的数据放入电子邮件的文本中?我认为你是这样的:

system 'echo "Your server a['name'] is not responding since difference_dates, fix it!" |mailx -s "Warning" anything@anything.com' 

是否可能并且正确?

0 个答案:

没有答案