构建后端为etcd的CoreDNS的容器集群(七)、编写适合阅读的域名管理脚本

news/2024/10/31 3:12:46/

 本文为系列测试文章,拟基于自签名证书认证的etcd容器来构建coredns域名解析系统。

一、前置文章

构建后端为etcd的CoreDNS的容器集群(一)、生成自签名证书

构建后端为etcd的CoreDNS的容器集群(二)、下载最新的etcd容器镜像

构建后端为etcd的CoreDNS的容器集群(三)、etcd功能测试

构建后端为etcd的CoreDNS的容器集群(四)、etcd挂载私有自签名证书进行访问测试

构建后端为etcd的CoreDNS的容器集群(五)、coredns对接etcd测试

构建后端为etcd的CoreDNS的容器集群(六)、编写自动维护域名记录的代码脚本

二、对接etcd,新增域名的脚本

etcdctl命令添加域名记录key值形如"/coredns/com/test/www",比较难阅读,编写shell脚本,用于较方便地新增域名。

1、编写脚本,脚本名:adddomain.sh,内容如下:
[root@localhost coredns]# cat adddomain.sh
#!/bin/bash
##__author__='daigjianbing'ENDPOINTS=https://etcd-1:2379,https://etcd-2:2379,https://etcd-3:2379
SSL_CACERT=/opt/coredns/ssl/ca.pem
SSL_CERT=/opt/coredns/ssl/etcd.pem
SSL_KEY=/opt/coredns/ssl/etcd-key.pemif [ $# -lt 2 ]; thenecho -e "Usage: $0 <domain> <ip> \nJust like: $0 www.163.com 192.168.1.1"exit 1
fidomain=$1
ip=$2parts=(${domain//\./ }) #用.分拆域名
reversed_domain=""
# 倒序重新生成易于阅读的域名
for ((i=${#parts[@]}-1; i>=0; i--)); doif [ -z "$reversed_domain" ]; thenreversed_domain="${parts[$i]}"elsereversed_domain="${reversed_domain}/${parts[$i]}"fi
done# 生成实际命令
etcdctl_command="etcdctl --endpoints=${ENDPOINTS} --cacert=${SSL_CACERT} --cert=${SSL_CERT} --key=${SSL_KEY} put /coredns/$reversed_domain '{\"host\":\"$ip\",\"ttl\":10}'"
echo "${etcdctl_command}"   #回显命令
eval $etcdctl_command       #执行命令
[root@localhost coredns]# 
2、执行测试
[root@localhost coredns]# ./adddomain.sh www.test.com 192.168.1.1
etcdctl --endpoints=https://etcd-1:2379,https://etcd-2:2379,https://etcd-3:2379 --cacert=/opt/coredns/ssl/ca.pem --cert=/opt/coredns/ssl/etcd.pem --key=/opt/coredns/ssl/etcd-key.pem put /coredns/com/test/www '{"host":"192.168.1.1","ttl":10}
OK
[root@localhost coredns]# 

可以看到具体添加域名的指令及执行结果为ok。

三、对接etcd,查询域名的脚本

同样编写脚本,将etcd数据库中存储的域名,以适合阅读的形式进行回显输出。

1、编写脚本,脚本名showdomain.sh
[root@localhost coredns]# cat showdomain.sh 
#!/bin/bash
##__author__='daigjianbing'ENDPOINTS=https://etcd-1:2379,https://etcd-2:2379,https://etcd-3:2379
SSL_CACERT=/opt/coredns/ssl/ca.pem
SSL_CERT=/opt/coredns/ssl/etcd.pem
SSL_KEY=/opt/coredns/ssl/etcd-key.pemwhile read -r line; doif [[ $line =~ ^/coredns/ ]]; thenkey=${line#/coredns/}parts=(${key//\// })reversed_parts=($(for part in "${parts[@]}"; do echo $part; done | tac))domain=""for ((i=0; i<${#reversed_parts[@]}; i++)); doif [ -z "$domain" ]; thendomain="${parts[$i]}"elsedomain="${parts[$i]}.${domain}"fidoneelsevalue=$(echo $line | awk -F'"host":"|","ttl":' '{print $2}')echo "${domain}, $value"fi
done <<< "$(etcdctl --endpoints=${ENDPOINTS} --cacert=${SSL_CACERT} --cert=${SSL_CERT} --key=${SSL_KEY} get --prefix "/")"
[root@localhost coredns]#
2、执行测试
[root@localhost coredns]# ./showdomain.sh     
www.test.com, 192.168.1.1

测试回显正常。

三、编写删除域名的脚本

1、脚本名deldomain.sh,内容:
[root@localhost coredns]# cat deldomain.sh
#!/bin/bash
##__author__='daigjianbing'ENDPOINTS=https://etcd-1:2379,https://etcd-2:2379,https://etcd-3:2379
SSL_CACERT=/opt/coredns/ssl/ca.pem
SSL_CERT=/opt/coredns/ssl/etcd.pem
SSL_KEY=/opt/coredns/ssl/etcd-key.pemif [ $# -lt 1 ]; thenecho -e "Usage: $0 <domain>\nJust like: $0 www.163.com"exit 1
fidomain=$1parts=(${domain//\./ })
reversed_domain=""
for ((i=${#parts[@]}-1; i>=0; i--)); doif [ -z "$reversed_domain" ]; thenreversed_domain="${parts[$i]}"elsereversed_domain="${reversed_domain}/${parts[$i]}"fi
doneetcdctl_command="etcdctl --endpoints=${ENDPOINTS} --cacert=${SSL_CACERT} --cert=${SSL_CERT} --key=${SSL_KEY} del /coredns/$reversed_domain"
echo "${etcdctl_command}"
eval $etcdctl_command
[root@localhost coredns]#
2、执行删除测试
[root@localhost coredns]# sh deldomain.sh www.test.com
etcdctl --endpoints=https://etcd-1:2379,https://etcd-2:2379,https://etcd-3:2379 --cacert=/opt/coredns/ssl/ca.pem --cert=/opt/coredns/ssl/etcd.pem --key=/opt/coredns/ssl/etcd-key.pem del /coredns/com/test/www
1
[root@localhost coredns]#
3、再次查询数据库
[root@localhost coredns]# ./showdomain.sh 
[root@localhost coredns]#

 可见记录已删除。


http://www.ppmy.cn/news/1543254.html

相关文章

算法闭关修炼百题计划(五)

前进、进步 1.单词搜索2.将有序数组转换为二叉搜索树3.路径总和III4.腐烂的橘子5.课程表6.实现简单Trie树7.杨辉三角 1.单词搜索 dfs包超时的&#xff0c;要剪枝&#xff0c;也就是说要回溯 在寻找下一个节点的之前&#xff0c;将上一个节点标记一下&#xff0c;以免访问 cl…

5G(NR)无线协议层二的RLC子层

5G(NR)无线协议层二的RLC子层 在5G(NR)无线协议层二(Layer2)中包括:MAC(媒体接入控制)、RLC(无线链路控制)、PDCP(分组数据汇聚协议)和SDAP(服务数据适配协议)这几个子层&#xff1b;其中RLC作为无线链路控制层, PDCP层位于其顶部&#xff0c;MAC层位于其下方;PDCP层通过RLC信…

word拷贝学号到excel

问题&#xff1a; 拷贝学号后会科学计数&#xff0c;而且数据是一样的&#xff0c;烦&#xff01; 解决&#xff1a; 1、在excel单元格里面&#xff0c;选择文本格式&#xff0c;确定&#xff0c;要看一下是否设置好了&#xff1b; 2、选择word里面的学号&#xff08;多个一起…

【计算机网络安全】湖北大学-MAC泛洪攻击实验

0x00 我们先来配置一下kali的静态ip&#xff0c;使其为192.168.10.3 打开终端我们输入&#xff1a;sudo vim /etc/network/interfaces 来编辑网卡信息&#xff0c;输入以下信息 auto eth0 iface eth0 inet static address 192.168.10.3 netmask 255.255.255.0 gateway 192.1…

『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC

『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC 文章目录 一. 『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC1. 介绍 二. 参考文献 一. 『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC 如何在 Ubuntu 22.04 上安装和配置 VNC 1. 介绍 虚拟网络计算…

力扣 简单 70.爬楼梯

文章目录 题目介绍题解 题目介绍 题解 思路分析&#xff1a; 确定dp数组以及下标的含义&#xff1a;dp[i]&#xff1a; 爬到第i层楼梯&#xff0c;有dp[i]种方法确定递推公式&#xff1a;从dp[i]的定义可以看出&#xff0c;dp[i] 可以有两个方向推出来。首先是dp[i - 1]&…

OpenCV基本操作(python开发)——(7)实现图像校正

OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;1&#xff09; 读取图像、保存图像 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;2&#xff09;图像色彩操作 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;3&…

iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出

效果图 从iPhone复制文件夹到windows电脑 步骤windows 打开iTunes通过USB连接iPhone和电脑手机允许授权iTunes中点击手机图标&#xff0c;进入到点击左边“文件共享”&#xff0c;在右边随便选择一个App&#xff08;随意...&#xff09;写入U盘&#xff1a;拖动电脑的文件&am…