Перезапустите локальный скрипт из URL-адреса, доступного исходному коду?

У меня длинный скрипт (> 500 строк), который я загружаю при каждой загрузке веб-страницы из локального файла. Исходный код этого скрипта часто обновляется и отображается под определенным URL-адресом, чтобы все пользователи могли обновлять свои локальные файлы, содержащие его (потому что многие предпочитают загружать его локально).

Не обновляя этот скрипт, вы часто подвергаете мой сайт нарушениям безопасности, но вместо копирования и вставки данных каждый раз, когда новый для обновления, я хочу перезагрузить его в свой локальный автоматически с помощью задачи Cron (скажем 0 0 1 * 0 ).

Есть ли способ в Unix, чтобы скопировать и вставить все данные из сценария, доступного URL, в локальный файл сценария?

Я предполагаю, что это будет включать переписку вроде << EOF > ... EOF Но на этот раз не из моего собственного локального стандартного ввода в приглашении Bash, а скорее из удаленного файла.

One Solution collect form web for “Перезапустите локальный скрипт из URL-адреса, доступного исходному коду?”

Есть как минимум два возможных способа сделать это:

Способ 1 – Использовать завиток в работе cron:

Используйте curl (установите его, если он еще не установлен). curl загружает файлы с использованием любого из обычного протокола – HTTP, HTTPS, FTP. Вы можете использовать curl в задании cron для периодической загрузки новой копии скрипта. Используйте man curl для получения информации о вызове.

 curl -o /path/to/script http://www.example.com/script 

Возможно, вы захотите загрузить сценарий под именем, отличным от сценария, который выполняется в процессе производства, и когда загрузка будет выполнена поверх всего сценария; это чтобы избежать каких-либо проблем в случае вызова сценария в середине загрузки.

Способ 2 – Использовать сценарий Wrapper:

Напишите оболочку, которая загружает сценарий, если это необходимо, а затем exec s или вызывает его (в зависимости от языка сценариев). Примером является Bash, так что логика легко понятна; для других языков сценариев вам придется адаптироваться. Например, предположим, что локальный скрипт называется real-script а URL-адрес – http://www.example.com/real-script . Оберткой может быть wrapper-script :

 #! /bin/bash if [ -f /path/to/real-script ] ; then # Local copy exists, download only if remote file is newer curl -z /path/to/real-script -o /path/to/real-script http://www.example.com/real-script else # Local copy does not exist, always download curl -o /path/to/real-script http://www.example.com/real-script fi chmod 755 /path/to/real-script exec /path/to/real-script "$@" 

Вызовите этот скрипт-оболочку так, как если бы это был настоящий скрипт; оболочка загрузит реальный скрипт, если локальная копия отсутствует или местная копия старше удаленного файла; то он будет выполнять гарантированную новую копию, передавая любые аргументы.

Вы также можете избежать поиска более новой версии, если существующая локальная копия не превышает 5 минут или любой временной интервал, который вы разрешаете.

Обратите внимание, что при использовании этого метода в производстве, вероятно, потребуется некоторая проверка ошибок.

  • Есть ли способ получить доступ к имени хоста, содержащему знак подчеркивания?
  • Любой CLI для проверки URL?
  • Как заставить IP-адрес и имя хоста отображаться только как domain.com на сервере Tomcat?
  • source.list URL-адрес репозитория для обновлений безопасности Debian с или без пути «debian-security»?
  • Декодирование кодировки URL (процентное кодирование)
  • Как включить переписывание URL-адресов на маршрутизаторе DD-WRT?
  • Заблокировать определенный URL-адрес?
  • Какие URI начинаются с файла: // или application: //?
  • Является ли адрес «computer: ///» только что-то символическим или его можно использовать где-то?
  • Введите URL-адрес и статус HTTP-статуса
  • Thunderbird: переносить длинные URL-адреса при отображении сообщения
  • Interesting Posts

    параметрические псевдонимы в csh для добавления команды экспорта

    ЖК-подсветка Sysfs в качестве теплового устройства

    Универсальный менеджер пакетов для установки / удаления?

    Как представить формат даты в '2015120' в оболочке Linux?

    Используйте awk для подсчета количества / bin / false записей в файле в поле7 с помощью одной команды для общего подсчета

    Как сохранить пользовательский PS1 в режиме суперпользователя?

    fail2ban не работает

    Разница между SNAT и Masquerade

    Как я могу выборочно изменять строки в файле, где изменения зависят от анализа строк выбора в целом, а не по отдельности

    Есть ли способ найти все ресурсы X, которые использует приложение?

    Как я могу попасть на терминал или виртуальную консоль, когда Ctrl-Alt-F2 выходит из строя?

    Что сделал `uniq -t`?

    Как поддерживать (верхнюю) строку, видимую при прокрутке?

    Zabbix-agent: не может stat 'filename.log': Permission denied

    Как печатать на принтере Lexmark 5630 с использованием CUPS

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