树莓派 设备信息 php,树莓派实现DDNS(PHP计划任务)

dcbb08d1e5f7d6b8a7f3d0b43af1182c.png

之前介绍了DNSPod动态IP解析更新程序,是Python实现的。下面介绍一个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'][

sudo chmod 777 dnspod.php

加入到定时任务,每个小时执行一次。

vi /etc/crontab

*/55 * * * * root /usr/bin/php /home/pi/dnspod.php >> /home/pi/dnspod.log 2>&1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某公司数据恢复报告书

一、故障描述1、设备清单设备名称设备型号数量HP FC存储HP MSA20001450G SAS.硬盘82、故障描述整个存储空间由8块450GB SAS的硬盘组成,其中7块硬盘组成一个RAID5的阵列,剩余1块做成热备盘使用。由于RAID5阵列中出现2块硬盘损坏,而此时只有一块…

python写sql语句_简单的(笨的)用python以及SQL语句书写增删改查

班级列表ID 班级名称 删除 修改{% for row in class_list %}{{ row.id }} {{ row.title }} {# 删除数据库#}--- {# 修改数据库#}*** {% endfor %}

如何返回一个只读泛型集合

Private md_states As New List(Of String)Private md_states As New List(Of String) ReadOnly Property States() As System.Collections.ObjectModel.ReadOnlyCollection(Of String) Get Return Me.md_states.AsReadOnly End Get End Property 转载于:https://www.cnblogs.c…

2013年计划

想写一本书,给非计算机专业人士看的关于计算机作用原理的书:比如键盘敲打,为啥会在显示屏中显示,这个敲打过程,计算机到底在里面做了啥,为啥屏幕刚好显示的就是输入法中显示的一模一样,为啥计算…

php .htaccess 的作用,php .htaccess文件使用详解

1、.htaccess文件使用前提.htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的作用。所有的访问都是通过URL实现&…

java里的时间转换

2019独角兽企业重金招聘Python工程师标准>>> http://cwind.iteye.com/blog/1908589 http://dyccsxg.iteye.com/blog/1908607 转载于:https://my.oschina.net/mustang/blog/608365

command对象提供的3个execute方法是_并发面试题:java中有几种方法可以实现一个线程?...

创建并启动线程的6种方式 继承Thread类创建线程实现Runnable接口创建线程使用Callable和FutureTask创建线程使用线程池,例如用Executor框架Spring实现多线程(底层是线程池)定时器Timer (底层封装了一个TimerThread对象&#xff09…

入侵思路新手学习内容

1.入侵主机的思路 第一.先找定目标<网站或IP> 没有目标怎样入侵? 第二.找到目标是什么操作系统! 操作系统都不知道找漏洞,又怎样成入侵成功! 第三,找操作系统漏洞!如开放的端口,开放的服务等!!! 没找到漏洞怎样入侵? 第四.扫描端口!找有没有漏洞利用的端口! 端口就是…

matlab中如何提取等高线,在Python或MATLAB中从等高线图中提取数据

这是一个小型的Matlab脚本&#xff0c;可以完成这项工作(使用一些GUI&#xff0c;在图的斜角处读取guidlines)&#xff1a;%// Import the data:imdata importdata(your_picture_file);Gray rgb2gray(imdata.cdata);colorLim [-1 1]; %// this should be set manually%// Ge…

【Android Studio】分类整理res/Layouts中的布局文件(创建子目录)

好吧&#xff0c;这个功能需求也是因为作为一个重度强迫症患者&#xff0c;非常想要把layouts中的文件分类整理下。否则看到一堆Activity和Fragment等文件混在一起特别难受。更重要的原因是&#xff0c;如果你的工程交给别人维护&#xff0c;别人看到一堆布局文件压根不知道从哪…

从零开始学python项目_从零开始可以这样学python

从零开始学python第二章 面向对象第一篇 太原理工大学机器人团队20日打卡day9 ​ 当我们讨论python时不得不讨论到面向对象&#xff0c;而我身为机器人团队的一名成员&#xff0c;在平时设计的时候可以通过把机器人的各个部分设计成不同的对象以此来简化重复的函数引用。并且py…

GDI绘图基本步骤总结(经典)

一、获得绘图的窗口句柄 方法(详细参数及其调用可以看考MSDN)&#xff1a; 1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName) 2、 HWN…

SQL排序查询

1.建一张客户表&#xff0c;包含客户名称&#xff0c;联系人&#xff0c;电话号码&#xff0c;公司地址. 2.建一张订单表&#xff0c;包含订单编号&#xff0c;客户ID,供应商ID,订单金额&#xff0c;客户支付状态&#xff0c;供应商支付状态,订单日期. 3.建一张供应商表&#x…

php smarty框架案例,php封装的smarty类案例

这篇文章主要介绍了php封装的smarty类,针对Smarty的基本操作技巧进行了封装整理,具有一定参考借鉴价值,需要的朋友可以参考下具体如下&#xff1a;/*** Project: Smarty: the PHP compiling template engine* File: Smarty.class.php* SVN: $Id: Smarty.class.php 4848 2014-06…

使用pip安装BeautifulSoup4模块

1.测试是否安装了BeautifulSoup4模块 import bs4 print bs4 执行报错说明没有安装该模块 Traceback (most recent call last):File "D:\work_java\python\src\baike_spider\test.py", line 7, in <module>import bs4 ImportError: No module named bs4 2.使用p…

mysql8创建用户并授权_新特性解读 | 从 wireshark 看 MySQL 8.0 加密连接

作者&#xff1a;秦福朗爱可生 DBA 团队成员&#xff0c;负责项目日常问题处理及公司平台问题排查。热爱 IT&#xff0c;喜欢在互联网里畅游&#xff0c;擅长摄影、厨艺&#xff0c;不会厨艺的 DBA 不是好司机&#xff0c;didi~本文来源&#xff1a;原创投稿*爱可生开源社区出品…

ACM进阶

ACM队不是为了一场比赛而存在的&#xff0c;为的是队员的整体提高。大学期间&#xff0c;ACM队队员必须要学好的课程有&#xff1a;l C/C两种语言l 高等数学l 线性代数l 数据结构l 离散数学l 数据库原理l 操作系统原理l 计算机组成原理l 人工智能l 编译原理l 算法设计与分析除此…

[转 TDD] 如何坚持TDD:使用者出现的问题以及解决方案

原文地址&#xff1a;http://www.infoq.com/cn/articles/levison-TDD-adoption-strategy 转载于:https://www.cnblogs.com/cly84920/archive/2010/03/24/4426820.html

DP备份任务失败原因解析

以JDC为例&#xff0c;DP的备份任务失败troubleshooting流程为&#xff1a;1&#xff09;/etc/opt/omni/server/datalist下都是备份的job code。如果要查看一个job code&#xff0c;可以more 此文件夹下的某个datalist,输入如下&#xff1a;最上面的两个脚本pre和post&#xff…

mysql求表中年龄同张三,mysql子查询与连接查询

表结构以及数据&#xff1a;CREATE TABLEstudent (idint(11) NOT NULLAUTO_INCREMENT,namevarchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,ageint(11) NULL DEFAULT NULL,PRIMARY KEY(id) USING BTREE) ENGINE InnoDB AUTO_INCREMENT 13 CHARACT…