Перезапустите локальный скрипт из 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 минут или любой временной интервал, который вы разрешаете.

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

  • Автоматическая копия для сканирования нескольких URL-адресов
  • Как использовать greped url, предоставляемый tshark внутри сценария bash?
  • Firefox отбрасывает URL-адрес, когда время подключения к серверу или неудача
  • Как перенаправить веб-запросы в свою частную сеть в зависимости от домена в URL-адресе?
  • команда не найдена, ручка не работает для URL-адреса
  • Домены третьего уровня
  • Как связать URL-адреса файлов?
  • не может просматривать изображения, хранящиеся на подключенном сетевом диске, на веб-сервере linux
  • .htaccess для перенаправления URL-адреса с hashtag
  • Терминал - создание гиперссылок
  • Правило перенаправления для Apache: добавление www в URL
  • Interesting Posts

    Debian 7.9 gnome или kde не работают на сервере sparc

    Тайм-аут соединений IPv6

    Скрипты `rm` и` rm -i`

    Как переназначить новую строку и возврат каретки независимо от терминала, используемого для подключения?

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

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

    Сортировка unix в алфавитном порядке, а затем в численном выражении, не работающая по назначению

    Почему CUPS нужны драйверы, если клиенты уже имеют их?

    Последовательная связь WvDial не работает с uart / dev / ttySAC4, но работает с `screen`

    OpenLDAP: как я могу перечислить активные схемы, классы и т. Д.?

    FreeBSD: удаление символических ссылок в devfs

    Не удается разрешить имена, но может пинговать адреса при подключении к маршрутизатору IPV4, все работает отлично с маршрутизатором IPV6

    Как записать iso во время загрузки

    Grep текст, соответствующий шаблону

    obfsproxy не удается построить, потому что он не может найти event2 / util.h

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