Генерация YAML путем анализа вывода systemd-resol - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать 2 массива с помощью bash.

array1 с именем DNSSERVERS: со всеми DNS-серверами;выходные данные должны быть такими: 1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4

и

array2 с именем DNSSERVERSSEARCH.with всего домена DNS;вывод должен быть таким: 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

1 Ответ

0 голосов
/ 01 октября 2018

Я думаю нашел способ здесь.

$ 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
$ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...