Использование wc -l
не даст правильного результата, если имя ваших файлов содержит новую строку.
В bash
и zsh
вы можете использовать расширение скобок:
for n in {000001..999999}; do
f=A-B-$n-C
[ -f "$f" ] || printf '%s missing\n' "$f"
done
ksh93
с опцией braceexpand
enable:
for n in {1..999999%06d}; do
: the code above
done
В ksh
и zsh
вы можете сделать:
typeset -Z6 i=1
max=999999
while [ "$i" -le "$max" ]; do
f=A-B-$i-C
[ -f "$f" ] || printf '%s missing\n' "$f"
: "$((i+=1))"
done
POSIXly:
min=1
max=999999
while [ "$min" -le "$max" ]; do
f=$(printf "A-B-%0${#max}d-C" "$min")
[ -f "$f" ] || printf '%s missing\n' "$f"
: "$((min+=1))"
done
Наконец-то я понял --.
Я добавил файл сценария zone-for-p2p1
в каталог /etc/network/if-up.d
.
zone-for-p2p1
содержимое файла сценария:
#!/bin/sh
#
# sets zone for p2p1 adapter to "trusted"
# to find out adapter name run "nmcli con show | grep p2p1"
#
nmcli con mod "netplan-p2p1" connection.zone trusted
Затем я также убедился, что файл имеет разрешение на выполнение:
sudo chmod +x /etc/network/if-up.d/zone-for-p2p1
Теперь при перезагрузке скрипт назначает соответствующую зону адаптеру. Этот пост помог мне добавить скрипт.
Я нашел запись в блоге , которая кажется связанной. Возможно, попробуйте перезапустить брандмауэр:
systemctl restart firewalld.service
Это необходимо сделать после добавления правила и перед перезагрузкой.
Поскольку ваш интерфейс управляется с помощью NetworkManager
, вы можете управлять настройками соединения напрямую с помощью nmcli
, чтобы установить зону:
sudo nmcli connection modify p2p1 connection.zone trusted
Поведение по умолчанию для этой команды заключается в постоянном внесении изменений, которые сохранятся после перезагрузки.
Вот решение для Ubuntu 18.04 со сценарием if -up и брандмауэром -cmd инструментом(nmcli not' почему-то не работает)
Станьте пользователем root и создайте файл if -up с правами администратора
sudo su -
touch /etc/network/if-up.d/p2p1-trusted && chmod +x $_
Поместите следующий контент и сохраните файл
#!/bin/sh
# check if script is executed for the interface we need
if [ "$IFACE" != "p2p1" ]; then
exit 0
fi
firewall-cmd --zone=trusted --change-interface="$IFACE"
Перезагрузка
Подтвердить
$ sudo firewall-cmd --get-active-zones
trusted
interfaces: p2p1
public
interfaces: wlp1s0
Пробовали ли вы перезагружать брандмауэр вместо перезапуска? Если нет, вы можете сделать это следующим образом:
firewall-cmd --reload
По моему опыту, всякий раз, когда вы используете переключатель --permanent
, вы должны применять это изменение с помощью --reload
, как указано выше.
Предположим, что X — это команда. (.e.g.firewall-cmd --add-service=http
)
2 опции:
либо X --permanent
, либоfirewall-cmd --reload
ИЛИ запуститеX
(без постоянного ), затем снова запустите его с постояннымX --permanent