ちゃんと動いてると思う。もっと綺麗に書きたいよなー
※1日回してみたけどまともに動いてなかった直さないと(グローバルIP取得ができなかったときの考慮が抜けてた。)
ルータからグローバルIPを取得しようとしている途中
#!/usr/bin/env ruby require 'net/http' Net::HTTP.version_1_2 DOMAIN = "domain.hoge" PASSWORD = "pass" IDDR_FILE = "/tmp/ddns.txt" LOG_FILE = "/var/log/ddns.log" Net::HTTP.start('dyn.value-domain.com', 80) do |http| my_iddr = http.get('/cgi-bin/dyn.fcg?ip').body file = File.open(IDDR_FILE, 'r') prev_iddr = file.gets.chomp file.close unless my_iddr == prev_iddr result = http.get("/cgi-bin/dyn.fcg?d=#{DOMAIN}&p=#{PASSWORD}&h=*&i=#{my_iddr}") log = File.open(LOG_FILE, 'a') log.puts(Time.now.strftime("%Y/%m/%d %H:%M:%S")) log.puts(result.body.gsub(/\n/, '|')) file = File.open(IDDR_FILE, 'w') file.print(my_iddr) file.close end end