?

Log in

No account? Create an account

Tue, Dec. 22nd, 2009, 06:06 pm
Учусь писать скрипты на bash для оптимизации своей работы

Не так давно, мои благородные Доны, вы тактично как бы намекнули мне, что надо писать не пошаговые инструкции для создания сайтов, а скрипты. И случай не заставил себя долго ждать. Сегодня мне поставлили задачку завести ещё три сайта, поэтому родился скрипт:

#!/bin/bash
#
# процедура добавления сайта на хостинг iba
#
echo «Сейчас будет добавлен сайт $1 на хостинг host.iba.by»
if [ $# -ne "3" ] # Проверка количества входных аргументов.
then
echo «Порядок использования: `basename $0` имя-сайта домен пароль»
exit 1
fi

if [ $(id -u) -eq 0 ]; then
egrep «^$1″ /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
echo «$1 exists!»
exit 1
else
pass=$(perl -e ‘print crypt($ARGV[0], «password»)’ $3)
useradd -m -p $pass $1
[ $? -eq 0 ] && echo «User has been added to system!» || echo «Failed to add a user!»
fi
else
echo «Only root may add a user to the system»
exit 2
fi

mkdir /home/$1/public_html
chown $1:$1 /home/$1/public_html

cat > /etc/apache2/sites-available/$1 << EOF
<VirtualHost *:80>
ServerName $2
ServerAdmin webmaster@localhost
ServerAlias *.$2

DocumentRoot /home/$1/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>

ErrorLog /home/$1/apache2-error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /home/$1/apache2-access.log combined
</VirtualHost>
EOF

cd /etc/apache2/sites-enabled/
ln -s /etc/apache2/sites-available/$1

echo ‘<php phpinfo(); ?>’ > /home/$1/public_html/index.php

/etc/init.d/apache2 restart

cat > /home/$1/readme <<EOF
Коллеги,

на хостинге создан сайт для вашей задачи. Для работы с ним необходимо на этапе создания сайта и отладки прописать в файл c:\windows\system32\drivers\etc\hosts строку «ip-адрессайта имясайта» (без ковычек).

Имя и пароль для подключения по ssh и ftp: $1/$3
версии ПО можно посмотреть по http://$2

с уважением,
подпись
EOF

Написан он на коленке левой ногой. Напишите в чём я категорически не прав?

(c)