加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

DNSPod 动态解析(DDNS) 的 Ruby 版本

发布时间:2020-12-17 04:11:49 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 [email?protected]:~# cat syncip.rb #!/usr/bin/env ruby#encoding:utf-8#code by johnlen shawrequire 'socket' require 'net/http' require 'net/h

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

[email?protected]:~# cat syncip.rb 
#!/usr/bin/env ruby
#encoding:utf-8
#code by johnlen shaw
require 'socket' 
require 'net/http' 
require 'net/https' 
require 'time' 
require 'open-uri' 
require 'net/telnet'

$parms = {
	"login_email" => "[email?protected]","login_password" => "xxxxxx","format" => "json","domain_id" => 1012096,"record_id" => 15271821,"sub_domain" => "d610","record_line" => "默认","value" => ""
}

current_ip = nil

def getip
	begin
		server = Net::Telnet::new('Host' => 'ns1.dnspod.net','Port' => 6666,'Telnetmode' => false)
		server.cmd("n") do |response|
  			return response
		end
	rescue Exception => ex
		sleep(30)
		getip
        end
end

def ddns(ip)
	$parms["value"] = ip.chomp.to_s
	url = URI.parse('https://dnsapi.cn:443/Record.Ddns')
	http = Net::HTTP.new(url.host,url.port)
	http.use_ssl = true if url.scheme == 'https'
	request = Net::HTTP::Post.new(url.path)
	request.set_form_data($parms)
	puts http.request(request).body
	return true
end

if $0 == __FILE__
#	begin
		loop do
			puts ip = getip
			if current_ip != ip then
				if ddns(ip) then
					current_ip = ip
				end
			end
			sleep(60)
		end
#	rescue	Exception => ex
#		p ex
#		return "Debug and fix me please."	
#	end
end

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读