友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com
之前介绍了DNSPod动态IP解析更新程序,是Python实现的。下面介绍一个PHP实现的脚本,实现了同样的动态域名解析功能。
<?php header("Content-type: text/html; charset=utf8"); class Dns { #Dnspod账户 private $dnspod_user = 'user@example.com'; #Dnspod密码 private $dnspod_pwd = 'password'; #Dnspod主域名,注意:是你注册的域名 private $domain = 'example.com'; #子域名,如www,如果要使用根域名,用@ private $sub_domain = 'www'; function getMyIp() { try { $ip = file_get_contents('http://www.leadnt.com/tools/ip.php'); return $ip; } catch(Exception $e) { echo $e->getMessage(); return null; } } function api_call($api, $data) { if ($api == '' || !is_array($data)) { exit('内部错误:参数错误'); } $api = 'https://dnsapi.cn/' . $api; $data = array_merge($data, array('login_email' => $this->dnspod_user, 'login_password' => $this->dnspod_pwd, 'format' => 'json', 'lang' => 'cn', 'error_on_empty' => 'no')); $result = $this->post_data($api, $data); if (!$result) { exit('内部错误:调用失败'); } $results = @json_decode($result, 1); if (!is_array($results)) { exit('内部错误:返回错误'); } if ($results['status']['code'] != 1) { exit($results['status']['message']); } return $results; } private function post_data($url, $data) { if ($url == '' || !is_array($data)) { return false; } $ch = @curl_init(); if (!$ch) { exit('内部错误:服务器不支持CURL'); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_USERAGENT, 'LocalDomains_PHP/1.0.0(roy@leadnt.com)'); $result = curl_exec($ch); curl_close($ch); return $result; } public function exec() { $ip = $this->getMyIp(); $domainInfo = $this->api_call('domain.info',array('domain' => $this->domain)); $domainId = $domainInfo['domain']['id']; $record = $this->api_call('record.list',array('domain_id'=> $domainId,'offset' =>'0','length' => '1','sub_domain' =>$this->sub_domain)); if($record['info']['record_total'] == 0) { $this->api_call('record.create', array( 'domain_id' => $domainId, 'sub_domain' => $this->sub_domain, 'record_type' => 'A', 'record_line' => '默认', 'value' => $ip, 'ttl' => '3600' )); } else { if($record['records'][0]['value'] != $ip) { $this->api_call('record.modify', array( 'domain_id' => $domainId, 'record_id' => $record['records'][0]['id'], 'sub_domain' => $this->sub_domain, 'record_type' => 'A', 'record_line' => '默认', 'value' => $ip )); } else { echo '指向正常'; } } } } $dns = new Dns(); $dns->exec(); ?>
sudo chmod 777 dnspod.php
加入到定时任务,每个小时执行一次。
vi /etc/crontab
*/55 * * * * root /usr/bin/php /home/pi/dnspod.php >> /home/pi/dnspod.log 2>&1
标签: 树莓派raspberrypilevel2编程rasnetworkipphpddns
文章来源:
树莓派实验室
版权声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除。
评论列表