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

Я хотел бы создать 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.* .

  • Как установить zabbix-agent поверх apt-get
  • Как я могу проверить свою ОС на VPS в Debian 8 64Bit
  • Как заставить WiFi работать автоматически?
  • время соединения smb-share увеличивается при каждой перезагрузке Windows PE
  • Добавить источники для apt-get для Debian Linux 2.4.27-3-286
  • установить 2.6.32.59 при сжатии
  • Проблема с клавиатурой с тестированием Debian и gdm3
  • crc8 undefined при компиляции модуля ядра Linux на Beaglebone black / Debian
  • Определите соединение 2G или 3G
  • Добавление в места Наутилуса
  • Как заставить GNOME 3 работать в Debian Wheezy под VMware?
  • Interesting Posts

    Получить команды, которые пользователь может запустить из / etc / sudoers?

    Настройка нового CentOS-сервера – размеры разделов и файловые системы

    Выполнить команду из определенной папки

    Как сохранить и восстановить все параметры оболочки, включая errexit

    Перенаправление вывода Bash в подкаталог текущего каталога

    Убедитесь, что / etc / export содержит правило, используя bash

    Зачем задавать размер блока при копировании устройств конечного размера?

    Способы конвертировать и комбинировать файлы изображений в файл PDF?

    Разрешения каталога «rs», chmod 655 не изменяется на «rx», почему?

    Конфигурационный файл ssh с несколькими версиями ssh

    Как передать аргументы perl при попытке изменить строку?

    Wind River Linux, ошибка неудачной зависимости

    RHEL: создание стабильных имен для сетевых интерфейсов

    git – извлеките некоторые файлы в общий 'lib'

    При входе в терминал отображать пользовательский текст

    Linux и Unix - лучшая ОС в мире.