読者です 読者をやめる 読者になる 読者になる

VALUEDOMAINのDDSN用スクリプト

Ruby Server

ちゃんと動いてると思う。もっと綺麗に書きたいよなー
※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