Shell скрипт для обновления WordPress блогов

linux-penguin Как программист, я люблю оптимизировать все процессы в своей жизни. Недавно меня таки достало вручную обновлять блоги на движке Wordpress и взялся за написание простенького скрипта который должен был это делать вместо меня. =) Но поскольку в Linux Shell я только начал активно пользовать этот простенький скрипт оказалось написать не так-то просто. На днях WordPress обновился до версии 2.7, но на этот раз я уже готов. 8)

Собственно сам скрипт:

#!/bin/bash

cd /home/tmp

wget http://wordpress.org/latest.tar.gz

downfile=`ls ./*.tar.gz`

tar xzf $downfile

rm -rf ./wordpress/wp-content
rm -f ./wordpress/wp-config-sample.php

for line in `cat blogs.txt`;
do

#variant #1 =) 
#OWNER=`expr  $line : '/home/\(.*\)/domains/.*'`
#echo $line $OWNER

echo "---------------------------------------"
echo "Start updagin wordpress: $line"

#variant #2:
owner=`stat -c %U $line`

chown -Rf $owner:$owner ./wordpress/*
find $line* -maxdepth 0 ! -name cgi-bin ! -name images
! -name wp-content ! -name .htaccess ! -name favicon.ico
! -name robots.txt ! -name wp-config.php -exec rm -rf {} \;
cp -pRf ./wordpress/* $line
echo "finished!"
done

rm -rf ./wordpress
rm -rf ./$downfile;

А сейчас более подробно:

Заруливаем в какую-то папку для удобства

cd /home/tmp

Качаем последнюю версию wordpress

wget http://wordpress.org/latest.tar.gz

Поскольку оно его сохраняет с другим именем аля wordpress-2.7.tar.gz, то получаем это имя и записываем его в переменную downfile. Хотя, наверное проще было бы в wget указать в какой файл сохранять, но у меня что-то не получалось. :D

downfile=`ls ./*.tar.gz`

Распаковываем архив

tar xzf $downfile

Удаляем файлы и папки, которые не надо обновлять

rm -rf ./wordpress/wp-content
rm -f ./wordpress/wp-config-sample.php

Дальше идет цикл, который читает построчно файл blogs.txt

for line in `cat blogs.txt`;
do

Еще нужно установить владельца и группу на новые файлы. Сначала я хотел делать это так (т.е. тупо отпарсить имя юзера со строки):

#OWNER=`expr  $line : '/home/\(.*\)/domains/.*'`

echo "---------------------------------------"
echo "Start updagin wordpress: $line"

Но я точно знал, что в Линуксе должна быть какая-то команда, которая покажет мне только имя владельца, и после того, как я перерыл 3 или 4 книги я таки нашел её:

owner=`stat -c %U $line`

Собственно устанавливаем права на все файлы, которые разархивировали

chown -Rf $owner:$owner ./wordpress/*

Дальше удаляем старый движок кроме того что нам нужно это указываем в параметрах ! -name MYFILE
Можно было сразу скопировать заменив старые файлы, но мне так кажется более надежно. Это все должно идти в одну строчку просто в посте не получается так. =)

find $line* -maxdepth 0 ! -name cgi-bin ! -name images ! -name wp-content
! -name .htaccess ! -name favicon.ico ! -name robots.txt ! -name wp-config.php
-exec rm -rf {} \;

и копируем новые

cp -pRf ./wordpress/* $line

Выводим сообщение – финита ля комедия

echo "finished!"

Конец цикла

done

Удаляем то, что качали вначале, оно уже не нужно

rm -rf ./wordpress
rm -rf ./$downfile;

Кроме того в цикл надо бы еще добавить строчку аля:
wget http://domain.com/wp-admin/upgrade.php?step=1&backto=
Но тогда оно еще насохраняет файлов, которые нужно поудалять. Знаю что теоретически должно работать как-то так wget http://domain.com > /dev/null или вот так wget -O /dev/null “http://www.”$line”/wp-admin/upgrade.php?step=1&backto=” 2> /dev/null но оно не работает. =( Линуксоиды, выручайте =)


Автор: Кросавчег. Запись опубликована Декабрь 13, 2008 в 11:08 и размещена в рубрике Программирование. Вы можете следить за обсуждением этой записи с помощью ленты RSS 2.0. Вы можете перейти в конец и оставить комментарий. Уведомления сейчас отключены.

Оставить комментарий

Please copy the string gJamXl to the field below:

:D :) ^_^ :( 8O :o 8) ;-( :lol: :wink: :evil: :p :whistle: :woot: :sleep: =] :sick: :straight: :love: :kiss: :angel: :unsure: