arrays - 通过解析 systemd-resolve 输出生成 YAML
问题描述
我正在尝试用 bash 创建 2 个数组。
array1 称为 DNSSERVERS :与所有 DNS 服务器;输出应该是这样的:1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4
和
array2 称为 DNSSERVERSSEARCH.with all DNS Domain;输出应该是这样的:local.domain.net,domain.net
所有这些信息来自:systemd-resolve --status
.
然后我想把这个数组放到一个名为的 bash 脚本中:bounding-netplan.sh
事情是今天我们有 4 个 DNS 服务器和 2 个 DNS 域。但明天可能是 1 个 DNS 服务器和 4 个 DNS 域。脚本必须灵活。
我试图用awk设置。但没有成功。
任何人都可以帮助我。将不胜感激。
非常感谢您提前。
# systemd-resolve --status
Global
DNS Servers: 1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
DNS Domain: local.domain.net
domain.net
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
home
internal
intranet
lan
local
private
test
cat bounding-netplan.sh
#!/bin/bash
MAJORRELEASE=$( lsb_release -sr | cut -d\. -f1 )
STROS=$( lsb_release -si )
# Ubuntu 18.04
if [ $STROS == Ubuntu ] && [ $MAJORRELEASE -ge 18 ] ; then
if [ -d /etc/netplan ]; then
DNSSERVERS=``
DNSSERVERSSEARCH=``
cat <<EOF | tee /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
switchports:
match: {name: "enp*"}
bonds:
bond0:
interfaces: [switchports]
addresses: [${IP}]
gateway4: ${ROUTE}
nameservers:
search: [${DNSSERVERSSEARCH}]
addresses: [${DNSSERVERS}]
EOF
fi
fi
解决方案
我想在这里找到了一种方法。
$ systemd-resolve --status | sed -e 's#[\t ]##g' | awk -F\: 'BEGIN{section=""}{if($2!=""){section=$1; print $1" "$2}else {print section" "$1}}' | awk '{if($1=="DNSServers") print $2}' | sort -u | tr '\n' ',' | sed -e 's#,$##'
1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4
$
推荐阅读
- javascript - 未捕获的 ReferenceError:未定义 jsonString
- ios - 序列 2 以中间延迟循环的动画
- python - Python 编写 AVRO timestamp-millis: datum.astimezone(tz=timezones.utc) AttributeError: 'int' object has no attribute 'astimezone'
- swift - 从委托回调中创建一个异步函数
- list - 如何在颤振的构造函数中使用列表?
- java - 解密由 Web 服务中的加密套件加密的值 - 对称密钥?- 更新了下面的完整工作代码
- reactjs - 将筛选项运算符设置为“OR”而不是“AND”
- wso2 - WSO2 Api manager 3.2.0 Analytics 未显示任何数据
- html - 在背景图像顶部添加颜色,
- php - 如何在 Doctrine 中与 JoinTable 建立双向 OneToMany 关系?