Можно добавить другой ipset для блокирования, на этот раз типа hash:net
, и добавьте 197.192.0.0/16 к этому ipset. Или замените свой ipset одним из типа hash:net
с тех пор hash:net
может сохранить IP-адреса также (сетевая маска 32).
Преобразовать из hash:ip
кому: hash:net
:
ipset save myIpset > myIpset &&
ipset destroy myIpset &&
sed s/:ip/:net/ myIpset | ipset restore &&
ipset add myIpset 197.192.0.0/16
Вы, вероятно, захотите использовать команду find
, используя опцию maxdepth
. Я создал этот пример структуры каталога:
/tmp/parent
/tmp/parent/subdir2
/tmp/parent/subdir1
/tmp/parent/subdir4
/tmp/parent/subdir4/notme
/tmp/parent/subdir3
Допустим, я хотел создать сим-ссылку на /tmp/hooks
в каждом субдире, но не на notme
subdir:
root@xxxxxxvlp12 ~ $ find /tmp/parent -type d -maxdepth 1 -exec ln -s /tmp/hooks {} \;
root@xxxxxxvlp12 ~ $ find /tmp/parent -ls
2490378 4 drwxr-xr-x 6 root root 4096 Oct 7 12:39 /tmp/parent
2490382 4 drwxr-xr-x 2 root root 4096 Oct 7 12:39 /tmp/parent/subdir2
2490394 0 lrwxrwxrwx 1 root root 10 Oct 7 12:39 /tmp/parent/subdir2/hooks -> /tmp/hooks
2490379 4 drwxr-xr-x 2 root root 4096 Oct 7 12:39 /tmp/parent/subdir1
2490395 0 lrwxrwxrwx 1 root root 10 Oct 7 12:39 /tmp/parent/subdir1/hooks -> /tmp/hooks
2490389 4 drwxr-xr-x 3 root root 4096 Oct 7 12:39 /tmp/parent/subdir4
2490390 4 drwxr-xr-x 2 root root 4096 Oct 7 12:38 /tmp/parent/subdir4/notme
2490396 0 lrwxrwxrwx 1 root root 10 Oct 7 12:39 /tmp/parent/subdir4/hooks -> /tmp/hooks
2490387 4 drwxr-xr-x 2 root root 4096 Oct 7 12:39 /tmp/parent/subdir3
2490397 0 lrwxrwxrwx 1 root root 10 Oct 7 12:39 /tmp/parent/subdir3/hooks -> /tmp/hooks
2490391 0 lrwxrwxrwx 1 root root 10 Oct 7 12:39 /tmp/parent/hooks -> /tmp/hooks
После оглядывания и воспроизведения с командой «Найти», я обнаружил, что было проще просто петлю над вещами, использующими ./*/
. Спасибо за помощь! Я сделал сценарий на моей учетной записи GitHub, который гораздо более тонко настроен. Хотя это ущерб GitLab. Это займет всего несколько минут, чтобы изменить его только для того, что вам нужно https://github.com/michaeljs1990/bash-scripts/blob/master/gitlab-hooks-migration.sh Отказ
#!/bin/bash
find . -name "hooks" -type l -delete
hooks="hooks"
for i in ./*/; do
ln -s /opt/gitlab/embedded/service/gitlab-shell/hooks/ $i$hooks
done
Найти
Может использоваться для выполнения команды в контексте каждого каталога под определенным путем.
Следующая команда ищет все файлы под / var / opt / gitlab / git-data / opositories / web /
, которые являются каталогами ( -Type d
) и создают символическое Ссылка относительно текущего каталога оно рассматривается (представлено {}
в -EXEC
)
, поэтому следующее Find
команда будет делать то, что вам нужно:
find /var/opt/gitlab/git-data/repositories/web/ -type d -exec ln /opt/gitlab/embedded/service/gitlab-shell/hooks/ {}/hooks \;