динамически объединить функции bash в новый файл оболочки

Я нашел способ сделать это:

iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 -m limit --limit 1/m --limit-burst 1  -j LOG --log-prefix "Port Scan on INPUT: "
iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --set
iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 -m limit --limit 1/m --limit-burst 1 -j LOG --log-prefix "Port Scan on FORWARD: "

В основном я установил предел 1 минута после первого попадания по правилу.

0
13.05.2018, 08:47
1 ответ

cat *.sh > all.sh объединит все файлы в один. Это немного нечисто, поскольку *.shтакже будет соответствовать all.sh, если он уже существует, но перенаправление очистит all.shдо того, как здесь запустится cat.

Вы также можете просто написать один скрипт для получения всех остальных (вызовите егоincludeall.sh):

for f in *.sh; do
    if [ "$f" != "includeall.sh" ]; then
       . "$f"
    fi
done

Затем источник, который с . includeall.sh. ifсуществует, чтобы избежать повторного -включения самого includeall. Хотя было бы неплохо поместить скрипты a.sh... z.shв отдельный каталог. Это сделало бы структуру каталогов чище и затруднило бы случайное получение неверных скриптов. for f in dir/*.sh; do. "$f"; doneв таком случае.

3
28.01.2020, 02:23

Теги

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