Веб-интерфейс для BIND DNS и DHCPD серверов

Я постараюсь ответить на ваш вопрос шаг за шагом. Просто предположим, что input - это строка вашего входного файла:

Извлечение номера столбца первого символа "R"

Это довольно простая работа для awk:

 awk '{for (i=1; i<=NF; i++) { if($i == "R") { print i - 3; exit} } }' < input

Учитывая, как вы вычисляете дату, я предполагаю, что "R" не может быть в первой строке (иначе номер дня может быть 0).

Извлечение значений 1-го и 2-го столбцов

Это еще проще:

awk '{print $1}' < input    # for first column
awk '{print $2}' < input    # for second column

Построение вывода

В случае, если команда возвращает True:

sed 's/ R / L /' < input

В случае, если команда возвращает False:

awk '{
       afterR=0;
       for (i=1; i<=NF; i++){
         if ($i == "R") {
           $i = "F";
           afterR=1;
         }
         if (afterR == 1 && $i == "O") {
           $i = "F"
         }
       }
       print $0
     }' < input

Собираем все вместе

Хотя это не приветствуется, я не вижу способа избежать зацикливания входных строк, так как для каждой строки нужно выполнить определенную команду. Имейте в виду, что для больших файлов это может быть очень медленно. Как может выглядеть ваш скрипт со всеми этими элементами:

while read line;
do
    date="%m/d$(echo $line | awk '{for (i=1; i<=NF; i++) { if($i == "R") { print i - 3; exit} } }')/%Y"
    result=$(./bpimagelist -client "$(echo $line | awk '{print $1}')" -policy "$(echo $line | awk '{print $2}')" -hoursago 100000 -U | awk -v date="$date" '$1 == date' | wc -l)
    if [[ $result -ne 0 ]];
    then
        echo $line | sed 's/ R / L /'
    else
        echo $line | awk '{
                            afterR=0;
                            for (i=1; i<=NF; i++){
                              if ($i == "R") {
                                $i = "F";
                                afterR=1;
                              }
                              if (afterR == 1 && $i == "O") {
                                $i = "F"
                              }
                            }
                            print $0
                          }'
    fi
done < myinputfile.txt
1
12.09.2017, 09:33
1 ответ

Используйте Webmin ; это веб-интерфейс с несколькими модулями, который позволяет вам визуально администрировать множество служб Linux. Он очень прост в использовании.

Если у вас несколько пользователей, вы также можете создавать пользователей с представлениями модулей, а некоторые модули позволяют устанавливать дополнительные ограничения для пользователей.

На уровне модуля DNS вы даже можете ограничить их определенными зонами DNS. Например, user1 может только редактировать зону xpto.com и перезапускать DNS-сервер.

Чтобы установить его в дистрибутив RH:

yum install webmin

или в Debian:

apt-get install webmin
1
28.01.2020, 00:49

Теги

Похожие вопросы