Ядро Drupal необходимо обновлять примерно раз в месяц, связано это с требованиями безопасности. В архив ядра входит более 1200 файлов, которые необходимо загружать на каждый сайт как можно быстрее, при выходе каждой новой версии. Задача по обновлению ядра легко решается на выделенном сервере посредством Drush, однако на обычных хостингах приходится обходиться классическим обновлением файлов по FTP. А когда сайтов становится больше и больше, их оперативное обновление становится рутиной.
DrupALL — скрипт, позволяющий массово обновлять ядра нескольких разных Drupal сайтов на разных хостингах. Для работы скрипту нужен файл drupall.accounts содержащий FTP аккаунты и директории назначения (собственно, где и установлены ядра). Необходимо принять меры по защите данного файла.
# This file contains accounts data: protocols, usernames, passwords, servers, destination folders
# Format:
# protocol username password server /destination/directory
# My Drupal sites:
ftp:// drupal_ftp_user1 drupal1password drupalsite1.com /public_html
ftp:// drupal_ftp_user2 drupal2password drupalsite2.net /www/drupalsite2.net
ftp:// drupal_ftp_user3 drupal3password drupalsite3.org /httpdocs/
Для работы скрипта необходима установка утилит NcFTP. Файл скрипта drupall.sh:
#!/bin/bash
date
echo DrupALL : Drupal core updater for all sites is ready!;
#TODO: Parse RSS feed to extract link
URL=`echo https://ftp.drupal.org/files/projects/drupal-7.60.tar.gz`;
ARC=`basename $URL`; # drupal-7.60.tar.gz
f_without_gz=${ARC%.*}; # cut .gz: drupal-7.60.tar
DIR=${f_without_gz%.*}; # cut .tar: drupal-7.60
if [ ! -f $ARC ]; then
echo Downloading $URL
wget $URL
else
echo $ARC already downloaded
fi
if [ ! -d $DIR ]; then
echo Extracting $ARC
tar -xvzf $ARC
echo Edit .htaccess manually!
exit
else
echo $ARC already extracted
fi
cat drupall.accounts | grep ftp:// | while read LINE
do
USER=`echo $LINE | awk '{print $2}'`;
PASS=`echo $LINE | awk '{print $3}'`;
HOST=`echo $LINE | awk '{print $4}'`;
DEST=`echo $LINE | awk '{print $5}'`;
date
echo Uploading $DIR to $USER:********@$HOST/$DEST
ncftpput -R -v -u $USER -p $PASS $HOST $DEST $DIR/* > /dev/null 2>&1
date
echo Finished $DIR to $USER:********@$HOST/$DEST
done
date
echo DrupALL is finished! $DIR uploaded to all sites!