безопасно запускать все скрипты в каталоге

Я хотел бы создать shell-скрипт, который, в свою очередь, запускает все скрипты, которые он находит в данном каталоге.

Должны применяться следующие ограничения:

  • скрипты должны выполняться в алфавитном порядке

  • сценарии резервного копирования (например, сценарии, которые выглядят как типичные сценарии резервного копирования, такие как foo~ или bar.bak ) должны быть опущены.

  • аргументы должны быть переданы скриптам

  • должны выполняться только «скрипты» (исполняемые файлы и, возможно, символические ссылки на исполняемые файлы)

Я нахожу этот общий шаблон в split-configurations (в моей системе Debian), и мне это очень нравится.

Теперь я создал простой сценарий запуска, который, кажется, делает все это:

 #!/bin/sh SCRIPTDIR=/etc/scripts/up.d for SCRIPT in "${SCRIPTDIR}/"* do case "${SCRIPT}" in *~|*.bak) continue ;; *) if [ -f "${SCRIPT}" -a -x "${SCRIPT}" ]; then "${SCRIPT}" $@ fi ;; esac done и #!/bin/sh SCRIPTDIR=/etc/scripts/up.d for SCRIPT in "${SCRIPTDIR}/"* do case "${SCRIPT}" in *~|*.bak) continue ;; *) if [ -f "${SCRIPT}" -a -x "${SCRIPT}" ]; then "${SCRIPT}" $@ fi ;; esac done 

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

Знаете ли вы о таком стартовом сценарии в системах Debian?

One Solution collect form web for “безопасно запускать все скрипты в каталоге”

Вы можете использовать команду run-parts :

 run-parts runs all the executable files named within constraints described below, found in directory directory. Other files and directories are silently ignored. If neither the --lsbsysinit option nor the --regex option is given then the names must consist entirely of ASCII upper- and lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens. 

Ограничения по умолчанию игнорируют файлы с расширениями, тильдами и т. Д. Вы можете передать несколько аргументов, передав несколько параметров --arg для run-parts :

 -a, --arg=argument pass argument to the scripts. Use --arg once for each argument you want passed. 

Вы можете создать список аргументов, который нужно передать:

 for i; do args+=(" -a '$i'"); done run-parts ... "${args[@]}" ... 

Он используется, например, по умолчанию crontab для выполнения скриптов в разных каталогах cron.* .

  • Устанавливать параметры apt-get, чтобы переносить безвредные «dpkg -force-conflict» kludge?
  • как получить список сайтов / доменов, связанных с wirehark
  • Ошибка входа в сервер Debian
  • Как быстро создать локальный репозиторий apt для случайных пакетов с использованием дистрибутива linux на базе Debian?
  • создание раздела в debian с большим количеством inodes на beaglebone black
  • Восстановление силы dpkg
  • Как найти / изменить, где GRUB 2 устанавливается на переписывание, на Debian Wheezy?
  • pmount не работает на Debian wheezy
  • Пакет linux-firmware-nonfree заставляет Debian не видеть мои мониторы
  • Разрешение запрещено в скриптовой тюрьме chroot
  • Должен ли я использовать useradd или adduser?
  • Linux и Unix - лучшая ОС в мире.