批量执行crontab指定条目的注释和解注释
前言:在日常变更过程中,变更前会注释某些定时任务(比如巡检告警等),变更完成后需恢复,有时变更操作的服务器很多,对应需要注释的crontab也很多且不相同,本文通过分发平台执行对应脚本批量实现crontab的注释和解注释功能。
环境说明:
主机名 | 操作系统版本 | ip | 用户名 | 备注 |
---|---|---|---|---|
ansible | Centos 7.6.1810 | 172.27.34.51 | crontab测试服务器01 | |
ansible-awx | Centos 7.6.1810 | 172.27.34.50 | crontab测试服务器02 |
一、crontab测试环境准备
1.主机ansible环境准备
[user_test@ansible ~]$ echo $HOME /home/user_test [user_test@ansible ~]$ crontab -l 0 0 * * * /home/user_test/bin/date > /dev/null 0 0 * * * $HOME/bin/date > /dev/null 0 0 * * * date > /dev/null * * * * * df -h > /tmp/df.txt 0 0 * * * $HOME/bin/pwd_test > /dev/null [user_test@ansible ~]$ pwd /home/user_test [user_test@ansible ~]$ ll 总用量 8 drwxrwxr-x 2 user_test user_test 6 9月 8 11:22 bin -rwxrw-r-- 1 user_test user_test 309 9月 8 11:01 crontab2.sh -rwxrw-r-- 1 user_test user_test 303 9月 8 10:59 crontab.sh [user_test@ansible ~]$ cd bin [user_test@ansible bin]$ ll 总用量 0 [user_test@ansible bin]$ ln -s /usr/bin/date date [user_test@ansible bin]$ ln -s /usr/bin/pwd pwd_test [user_test@ansible bin]$ ll 总用量 0 lrwxrwxrwx 1 user_test user_test 13 9月 8 11:23 date -> /usr/bin/date lrwxrwxrwx 1 user_test user_test 12 9月 8 11:23 pwd_test -> /usr/bin/pwd [user_test@ansible bin]$ /home/user_test/bin/date 2020年 09月 08日 星期二 11:23:25 CST [user_test@ansible bin]$ /home/user_test/bin/pwd_test /home/user_test/bin
2.主机ansible-awx环境准备
[user_test@ansible-awx ~]$ echo $HOME /home/user_test [user_test@ansible-awx ~]$ crontab -l 0 0 * * * /home/user_test/bin/date > /dev/null 0 0 * * * $HOME/bin/date > /dev/null 0 0 * * * date > /dev/null 0 0 * * * $HOME/bin/df -h > /tmp/df.txt [user_test@ansible-awx ~]$ pwd /home/user_test [user_test@ansible-awx ~]$ ll 总用量 0 drwxrwxr-x 2 user_test user_test 6 9月 8 11:25 bin [user_test@ansible-awx ~]$ cd bin [user_test@ansible-awx bin]$ ll 总用量 0 [user_test@ansible-awx bin]$ ln -s /usr/bin/date date [user_test@ansible-awx bin]$ ln -s /usr/bin/df df [user_test@ansible-awx bin]$ ll 总用量 0 lrwxrwxrwx 1 user_test user_test 13 9月 8 11:25 date -> /usr/bin/date lrwxrwxrwx 1 user_test user_test 11 9月 8 11:25 df -> /usr/bin/df [user_test@ansible-awx bin]$ /home/user_test/bin/date 2020年 09月 08日 星期二 11:25:58 CST [user_test@ansible-awx bin]$ /home/user_test/bin/df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/root--vg-root 10G 229M 9.8G 3% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 201M 1.7G 11% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/root--vg-usr 10G 1.7G 8.4G 17% /usr /dev/mapper/root--vg-home 10G 50M 10G 1% /home /dev/mapper/root--vg-var 10G 3.0G 7.1G 30% /var /dev/mapper/root--vg-tmp 10G 33M 10G 1% /tmp /dev/mapper/root--vg-opt 10G 233M 9.8G 3% /opt /dev/sda1 497M 138M 359M 28% /boot tmpfs 379M 0 379M 0% /run/user/0
分别在两台主机上构造定时任务,其中$HOME/bin下的命令都为/usr/bin/下系统命令的软链接,/home/user_test/bin/pwd_test等命令测试正常。
本文目标:
注释ansible的“0 0 * * * $HOME/bin/date > /dev/null”、“0 0 * * * $HOME/bin/pwd_test > /dev/null”
注释ansible-awx的“0 0 * * * $HOME/bin/df -h > /tmp/df.txt”
二、执行脚本
1.注释脚本crontab.sh
[user_test@ansible ~]$ more crontab.sh #!/bin/bash host=`hostname` echo $host if [ $host = ansible ] then sed -i.bak '/$HOME\/bin\/date/s/^/#/' /var/spool/cron/user_test sed -i.bak '/$HOME\/bin\/pwd_test/s/^/#/' /var/spool/cron/user_test fi if [ $host = ansible-awx ] then sed -i.bak '/$HOME\/bin\/df/s/^/#/' /var/spool/cron/user_test fi
2.解注释脚本crontab2.sh
[user_test@ansible ~]$ more crontab2.sh #!/bin/bash host=`hostname` echo $host if [ $host = ansible ] then sed -i '/^#.*$HOME\/bin\/date/s/^#//g' /var/spool/cron/user_test sed -i '/^#.*$HOME\/bin\/pwd_test/s/^#//g' /var/spool/cron/user_test fi if [ $host = ansible-awx ] then sed -i '/^#.*$HOME\/bin\/df/s/^#//g' /var/spool/cron/user_test fi
两个脚本判断逻辑:首先获取主机名,然后匹配主机名,根据主机名来注释或解注释指定的定时任务,指定的定时任务通过sed工具匹配获取。
三、测试执行
1.spug平台模板配置
使用自动化运维平台spug(后面文章会介绍)进行测试。
模板管理中新建两个模板'注释crontab'和'解注释crontab',这两个模板其实分别对应脚本crontab.sh和crontab2.sh。
如果没有spug平台,也可以使用ansible平台进行分发执行。
2.注释crontab
选择主机ansible和ansible-awx
选择模板'注释crontab'
选择模板即是选择对应执行的脚本,'开始执行'
验证:
发现主机ansible和ansible-awx都完成对应crontab的注释。
3.解注释crontab
选择模板'解注释crontab'
执行:
验证:
两台主机的crontab都已经解注释,注释和解注释测试都符合预期。
脚本已上传github:comment-and-uncomment-crontab
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【AWS征文】AWS网络演进
我们都知道,对于企业来讲,随着业务的发展和重点不同,对网络的实际需求也是不同的,尤其是对于公有云的网络架构,随着AWS的功能完善和发展,越来越多的网络功能得以实现。本文将结合实际案例讲述如何以及为什么从DX过渡到DX gateway的 DX时期的网络方案 企业上云绝非一蹴而就的事情,这就意味着必然存在着一个本地云与公有云共同存在的时期,这就涉及到了本地IDC与云上IDC的互通问题。因我们启用业务上云的方案较早,当时的 AWS还仅有DX的功能,通过此功能我们可以使用AWS合作伙伴专线将本地IDC与AWS连接起来。具体网络架构如下: DX的出现,使得企业可以通过DX的private VIF或者 public VIF将企业的分支/本地IDC与AWS连接起来。而为了实现高可用性,一般不会仅建立一个DX通道,可能会采用如下冗余方案: 两条不同ISP的专线通过不同DX location或者DX 设备连接到AWS的方案 一条ISP专线,一根Internet+IPsec ***的方案 一条ISP专线,一根SD-WAN线路的方案 两根***线路的方案,(可以是Internet+IPsec ***与SD-...
- 下一篇
在线教育崛起,线下培训机构搭建在线网校系统有哪些方案
互联网技术的崛起使得学习不再局限于教室,旅游、坐车、闲暇等碎片化时间都可用于获取知识。如今的互联网基础已搭建完成,在整个商业大环境进入转型的局势下各行业也都面临转型的挑战。一边是传统企业发展的增长瓶颈,一边是互联网浪潮带来的机会。一个是面向小范围的地区性用户,一个是面向全国甚至全球用户,在强大的互联网链接能力下你会怎么做选择。 在越来越追求效率的今天,用户已经帮企业作出了回答。例如传统线下的教培行业,在线上教学平台和教学工具越来越完善之后,大家就会选择更便捷的方式来获取知识。区别于线下上课在线教育抓住了用户业余学习的痛点,讲师可在业余时间将专业领域的知识整理成视频或在空余时间做直播教学,将业余时间的收益最大化。学员在平台上一次性付费后可随时随地打开学习,将时间利用最大化。 面对新教育趋势企业需要怎样迈出转型这一步,又该如何搭建在线教育平台? 首先线上学习的场景、设备和时间这些都是不固定的,想要模拟线下教学场景必须在满足学员多样化选择的同时结合视频直播支持讲师与学员实时互动的教学体验。因此在线学习系统需支持视频点播和实时直播两大块在线教学功能,搭配在线考试及题库练习,营销分销等。 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用