使用crontab定时自动更新DDNS

需求说明:

N1盒子的armbian系统配置好了 ipv6 的ddns,实现了域名访问本机,但是本地ipv6可能会发生变化,当发生变化后,需要手动执行指令,将新的ip与域名绑定,现在我们采用定时任务,每1分钟执行一次命令,这样,当本地的ip6地址发生变化后,1分钟内就能自动绑定。

下载DDNS-master,放到 /usr/local/src 目录下并解压 ,这个目录专门用来放本地手动安装的应用。

具体步骤及配置文件见单独文章:

实现步骤

DDNS手动执行更新的命令是在DDNS-master目录下执行:python3  ./run.py  或 python3  run.py

现在,我们将需要将这个执行命令,放到 crontab 里面,让程序自动执行,并且每次执行写到日志里面,方便查看。

具体如下:

新建一个文件:touch  ddns.sh

赋可执行权限:chmod  +x  ddns.sh  (或者chmod  777  ddns.sh)

编辑器打开编辑文件:nano ddns.sh  或者 vim ddns.sh

将需要执行等具体指令输入到这个文件中,如下:

#!/usr/bin/env bash
python3 ./run.py && echo "run.py文执行了"

然后 crontab -e 进入crontab编辑器,如下:

输入如下:

 过几分钟中,到 /tmp 目录下查看 ddns.log2有没有更新,如果有表示成功了,然后将猫路由器盒子都断电重启,重启后到阿里云后台查看域名解析的历史记录。

在文件里面加上日期,方便看日志

单引号和双引号的问题:

date +'%Y - %m -%d  %H:%M:%S'  和   date +"%Y-%m-%d  %H:%M:%S"  效果一样,效果如下:

ddns.sh文件最终如下:

#!/usr/bin/env bash
python3 ./run.py && echo "run.py被执行!执行时间:$(date +'%Y-%m-%d  %H:%M:%S')"

最终效果:

定时自动删除日志

因为日志文件每分钟都会追加一条进去,所以文件会越来越大

所以我们需要定期删除这个文件

crontab -e 添加下面内容:

# 每日23点30分删除 ddns.log 这个文件
30 23 * * * rm /tmp/ddns.log

没执行成功1

直接写在crontab里面,不用单独创建一个文件,写法如下(没有成功):

* * * * * cd /usr/local/src/DDNS-master && bash run.sh && echo "定时任务执行了" >> /tmp/ddns.log4

没执行成功2

# 测试1
* * * * * /usr/bin/bash /usr/local/src/DDNS-master/auto-run.sh >> /tmp/ddns.log1

# 测试2
* * * * * bash /usr/local/src/DDNS-master/auto-run.sh >> /tmp/ddns.log2

没执行成功3

#!/usr/bin/env bash
python3 ./run.py && echo "run.py文执行了"
date +"执行时间:%Y-%m-%d  %H:%M:%S" 

没执行成功4

具体情况:日期未输出

原因:date 后面的日期变量缺少引号包起来

#!/usr/bin/env bash
python3 ./run.py && echo "run.py被执行!执行时间:$(date +%Y-%m-%d  %H:%M:%S)"

拓展

echo用法

参考:Linux常用命令13 - echo - 知乎 (zhihu.com)

重定向到一个文件

您可以使用操作符将输出重定向 > 或者 >> 到一个文件,而不是显示在屏幕上。

如果 file.txt 不存在,命令将创建它。 当使用该文件时将被覆盖,而将把输出附加到该文件。

可以使用 cat 命令查看该文件内容:

echo -e 'The only true wisdom is in knowing you know nothing.\nSocrates' >> /tmp/file.txt

使用 $(command)表达式将命令输出包含在 echo 的参数中, 下面的命令将显示当前日期:

echo "The date is: $(date +%D)"
The date is: 04/01/20

echo 还可以显示变量。在下面的示例中,我们将输出当前登录用户的名称:

echo $USER
admin

crontab用法

【crontab的常用命令:crontab -e 编辑,  crontab -l 查看】

【crontab 定时任务的常用规则: f1 f2 f3 f4 f5 program  】
    f1 表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天,program 表示要执行的程序。

语法学习:

        语法详解1:Linux Crontab 定时任务 | 菜鸟教程 (runoob.com)

        语法详解2:linux 定时任务crontab用法详解 (51gjie.com)

参考案例: 

*/5 * * * * /bin/echo "11" >> /tmp/test:每5分钟将“11”写入test文件

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44     //每30分钟同步一下时间

* */1 * * * /usr/local/etc/rc.d/lighttpd restart   //每一小时重启apache

我们现在的需要是:每隔10分钟执行一次 auto-run.sh 这个脚本,定时任务按照规则写出来就是:

*/10 * * * * /usr/bin/python3 /root/DDNS-master/run.py     //每10分钟用python3执行run.py一次

* * * * * * "/usr/bin/python3 /root/DDNS-master/run.py" >> /tmp/ddns.log  //每1分钟用python3执行run.py一次,并写入ddns.log这个日志里面。

我们先查看一下crontab里面现在的定时任务,执行 crontab -l 查看,如下:

root@armbian:~/DDNS-master# crontab -l
no crontab for root

执行 crontab -e 进行编辑,打开默认如下: 

将我们上面的命令,敲上去,如下:

 执行后出现错误,会自动进入编辑界面

经过检查发现,星号多了一个,应该是5个星号

将命令单独拿出来执行,提示没有config.json文件,自动又创建了一个,不知道创建到哪里了,于是使用查找命令,查找这个文件,如下:

root@armbian:~# find / -name config.json
/root/DDNS-master/config.json
/tmp/config.json

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nuvoton NK-980IOT开发板 u-boot 编译

前言 最近搭建了 Nuvoton NK-980IOT开发板 的开发编译环境,记录一下 u-boot 的 编译流程 Nuvoton NK-980IOT开发板 资源还是比较的丰富的,可以用于 嵌入式Linux 或者 RT-Thread 的学习开发 开发板上电比较的容易,两根 USB 线即可&#xff0…

计网笔记 01 概述 计算机网络体系结构、参考模型

文章目录 前言1、计网概述1.1 概念、组成、功能、分类1.1.1 概念1.1.2 计网组成1.1.2 计网分类 1.2 标准化工作及相关组织1.2.1 标准的分类 1.3 性能指标★★★1.3.1 速率相关性能指标1.3.2 时延相关指标 2、体系结构&参考模型★★★★★(对应王道视频7-10p 相当…

Android Jetpack:利用Palette进行图片取色

与产品MM那些事 新来一个产品MM,因为比较平,我们就叫她A妹吧。A妹来第一天就指出:页面顶部的Banner广告位的背景是白色的,太单调啦,人家不喜欢啦,需要根据广告图片的内容自动切换背景颜色,颜色…

基于CUDA的GPU计算PI值

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 基于CUDA的GPU计算PI值。本项目使用CUDA编程模型并行计算PI值,研究GPU与CPU效率的比较,分析不同GPU线程分块对性能的影响。 异构计算试验报告 —实验1:基于CUDA的GPU计算PI值 第一部分&…

JS逆向 -- 某平台登录加密分析

一、打开网站,使用账号密码登录 账号:aiyou123.com 密码:123456 二、通过F12抓包,抓到如下数据,发现密码加密了 三、加密结果是32位,首先考虑是md5加密。 四、全局搜索pwd,点击右上角&#xf…

【ros2】ros melodic迁移到ros2 dashing过程中碰到的问题及解决方法

序言 总结踩坑经历,以利他人 1. error: forming pointer to reference type … & 报错原因: ros2回调函数的参数不能是引用形式 &,需要去除& 解决方法: 如果是指针引用,直接去除引用 void Callback(con…

javascript中的严格模式

认识严格模式: 在ECMAScript5标准中,JavaScript提出了严格模式的概念(Strict Mode): 严格模式很好理解,是一种具有限制性的JavaScript模式,从而是代码隐式的脱离了“懒散(sloppy)模…

软件测试实战,Web测试详细总结 (覆盖所有测试点),你要的都有

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Web自动化测试&…

在技术圈超卷的当下,学历到底是敲门砖还是枷锁?

前言 最近,突然之间被“孔乙己文学”刷屏了,短时间内“孔乙己文学”迅速走红,孔乙己是中国文学中的一位经典人物,他的长衫被认为是他的象征之一,孔乙己的长衫折射出很多现象,既有社会的,也有教育…

Android平台播放透明视频

Android平台播放透明视频 思路 设计一种特殊的视频,它的一半内容存储alpha信息,另一半内容存储rgb信息,接着通过OpenGL获取每个像素点的alpha值和rgb值进行混合,最后出来的画面就是带有透明效果的视频了。 可以上下的分&#xf…

服务器中了勒索病毒,升级后的Malox勒索病毒特征,勒索病毒解密数据恢复

Mallox勒索病毒是网络上较为流行的勒索病毒,但是随着黑客加密技术的不断升级,Mallox勒索病毒的新升级版本Malox勒索病毒已经开始出现。Malox勒索病毒是一种最近在网络上广泛传播的恶意软件,其感染方式多种多样,主要以加密受害人的…

基于zookeeper实现分布式锁

目录 zookeeper知识点复习 相关概念 java客户端操作 实现思路分析 基本实现 初始化链接 代码落地 优化:性能优化 实现阻塞锁 监听实现阻塞锁 优化:可重入锁 zk分布式锁小结 zookeeper知识点复习 Zookeeper(业界简称zk&#xff…

Zookeeper系统模型介绍

目录 一、数据模型 二、 节点的类型 (1)持久节点 (2)持久顺序节点 (3)临时节点 (4)临时顺序节点 三、客户端命令行 (1)创建节点 (2&…

最新VUE面试题

前言 本文以前端面试官的角度出发,对 Vue 框架中一些重要的特性、框架的原理以问题的形式进行整理汇总,意在帮助作者及读者自测下 Vue 掌握的程度。 本文章节结构以从易到难进行组织,建议读者按章节顺序进行阅读,当然大佬级别的…

操作系统——进程管理

0.关注博主有更多知识 操作系统入门知识合集 目录 0.关注博主有更多知识 4.1进程概念 4.1.1进程基本概念 思考题: 4.1.2进程状态 思考题: 4.1.3进程控制块PCB 4.2进程控制 思考题: 4.3线程 思考题: 4.4临界资源与临…

【分布式技术专题】「授权认证体系」OAuth2.0协议的入门到精通系列之授权码模式

这里写目录标题 OAuth2.0是什么OAuth2.0协议体系的Roles角色OAuth定义了四个角色资源所有者资源服务器客户端授权服务器 传统的客户机-服务器身份验证模型的问题 协议流程认证授权授权码 OAuth2.0是什么 OAuth 2.0是用于授权的行业标准协议。OAuth 2.0专注于简化客户端开发人员…

一文介绍Linux EAS

能量感知调度(Energy Aware Scheduling,简称EAS)是目前Android手机中Linux线程调度器的基础功能,它使调度器能预测其决策对CPU能耗的影响。依靠CPU的能量模型(Energy Model,简称EM),…

疑难问题定位案例复盘(三)

今天我们分享一个数据库被异常改写的案例,通过该案例我们可以学习总结出常规的文件被改写问题定位思路。 问题现象 1、测试环境在进行特定压力测试时发现页面登陆异常,且调试日志多个进程持续打印“数据库打开失败”日志。 2、测试环境在进行多个压力测…

【机器学习】决策树(实战)

决策树(实战) 目录 一、准备工作(设置 jupyter notebook 中的字体大小样式等)二、树模型的可视化展示1、通过鸢尾花数据集构建一个决策树模型2、对决策树进行可视化展示的具体步骤3、概率估计 三、决策边界展示四、决策树的正则化…

PyCharm2023.1下载、安装、注册以及简单使用【全过程讲解】

在使用PyCharm IDE之前,请确保自己的计算机里面安装了Python解释器环境,若没有下载和安装可以看看我之前的文章>>>Python环境设置>>>或者还可以观看视频讲解。 注意:本文软件的配置方式仅供个人学习使用,如有侵…