Проблема управления Nftables

Что, если бы вы сделали это вот так?

#/bin/bash

input1='20160101'
input2='10' #(Note: These are inputs to each of the scripts I want to run)
scriptdir='/path/to/somewhere'
for q in {00..23}
do
    hh="${q}"
    echo "$hh"
    ( bash "$scriptdir/Hour$hh.csh" "$input1" "$input2" ) &
    sleep 30
done
wait
echo "All done!"

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

2
17.09.2020, 18:53
3 ответа

Это может сработать:

handle=$(nft list ruleset -a | grep "$your_rule" | grep "#" | awk '{print $NF}')
test -n "$handle" && nft delete rule filter output handle "$handle"
nft insert rule filter output position XX...
1
18.03.2021, 23:04

Что бы я сделал

Создайте пользовательскую таблицу и заменяйте ее каждый раз. Обновления таблицы атомарны, если выполняются одним вызовом nft.

Итак, измените правила в моей программе, повторно -сгенерируйте таблицу, вызовите nft.

1
18.03.2021, 23:04

Тайм-ауты элементов могут стать нужным вам решением. Вы можете поместить адреса или порты в набор, из которого они будут автоматически удалены по истечении срока действия.

Тайм-ауты могут быть указаны в часах, минутах, секундах или в комбинации, такой как 2h10m5s.

Цитата и пример из вики nftables:

% nft add table inet myfilter
% nft add set inet myfilter myset {type ipv4_addr\; flags timeout\; }
% nft add element inet myfilter myset {10.0.0.1 timeout 10s }

Результат:

% nft list ruleset
table inet myfilter {
    set myset {
        type ipv4_addr
        flags timeout
        elements = { 10.0.0.1 timeout 10s expires 8s}
    }
}

Источник:https://wiki.nftables.org/wiki-nftables/index.php/Element_timeouts

1
06.10.2021, 21:14

Теги

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