Endy1
26-05-2010, 15:17
Помогите пожалуйста разобраться. Пишу небольшой скриптик, который будет создавать виртуальных хосты для Apache. В начале он будет выводить в консоль 2 варианта на выбор: Apache2 или Apache1.3
В зависимости от выбора пользователя будет выполнятся своя часть скрипта. Собственно весь скрипт тут не важен, а интересна мне именно эта часть:
echo Where do you want to create virtual host?
select opt in "Apache2" "Apache1.3"; do
if [ "$opt" = "Apache2" ]; then
#Apache2
echo -n "Enter pagename:"
read PAGENAME
echo -n "Page will be called $PAGENAME ?"
read REPLY2
if [ "$REPLY2" = "y" ];
then
continue
else
exit 0
fi
Дело в том, что выполняется сценарий только того места, где спрашивается Page will be called $PAGENAME ?
Дальше выполнение прерывается. Я подозреваю, что хитрость в каком-то конфликте между этими условиями
if [ "$opt" = "Apache2" ];
и
if [ "$REPLY2" = "y" ];
Но никак не могу понять, как заставить его работать.
Если нужно, здесь весь скрипт.
function ch {
echo changing home directory permissions:
echo $BASEDIR ...
chown svn.www $BASEDIR
echo $HOMEDIR ...
mkdir $HOMEDIR
chown svn.www $HOMEDIR
chmod 755 $HOMEDIR
mkdir $TMPDIR
chown svn.www $TMPDIR
chmod 1770 $TMPDIR
mkdir $LOGDIR
chown root.www $LOGDIR
chmod 755 $LOGDIR
cp $SKEL $HOMEDIR
}
echo Where do you want to create virtual host?
select opt in "Apache2" "Apache1.3"; do
if [ "$opt" = "Apache2" ]; then
#Apache2
echo -n "Enter pagename:"
read PAGENAME
echo -n "Page will be called $PAGENAME ?"
read REPLY2
if [ "$REPLY2" = "y" ];
then
continue
else
exit 0
fi
BASEDIR=/srv/virtual_2/$PAGENAME
HOMEDIR=$BASEDIR/./html
TMPDIR=$BASEDIR/tmp
LOGDIR=$BASEDIR/logs
GROUP=www
SHELL=/bin/bash
SKEL=/etc/web_skel/index.html
mkdir $BASEDIR
echo changing home directory permissions:
echo $BASEDIR ...
chown svn.www $BASEDIR
echo $HOMEDIR ...
mkdir $HOMEDIR
chown svn.www $HOMEDIR
chmod 755 $HOMEDIR
mkdir $TMPDIR
chown svn.www $TMPDIR
chmod 1770 $TMPDIR
mkdir $LOGDIR
chown root.www $LOGDIR
chmod 755 $LOGDIR
cp $SKEL $HOMEDIR
ch
echo
echo creating webserver configuration ...
sed s/XXXXXX/$PAGENAME/ < /etc/apache2/vserver.proto >$PAGENAME.http
echo please review new server configuration for $PAGENAME
sleep 2
vim $PAGENAME.http
echo appending new configuration to apache configuration file
cat $PAGENAME.http >>/etc/apache2/vhosts.d/vhosts.conf
rm -i $PAGENAME.http
echo restarting apache
/etc/init.d/apache2 restart
echo Apache2 virtual host is done
exit
#Apache1
elif [ "$opt" = "Apache1.3" ]; then
echo -n "Enter pagename:"
read PAGENAME1
echo -n "Page will be called $PAGENAME1?"
read REPLY
if [ "$REPLY" = "y" ];
then
continue
else
exit 0
fi
BASEDIR=/srv/virtual_1.3/$PAGENAME1
HOMEDIR=$BASEDIR/./html
TMPDIR=$BASEDIR/tmp
LOGDIR=$BASEDIR/logs
GROUP=www
SHELL=/bin/bash
SKEL=/etc/web_skel/index.html
mkdir $BASEDIR
ch
echo
echo creating webserver configuration ...
sed s/XXXXXX/$PAGENAME/ < /etc/apache1.3/vserver.proto >$PAGENAME.http
echo please review new server configuration for $PAGENAME
sleep 2
vim $PAGENAME.http
echo appending new configuration to apache configuration file
cat $PAGENAME.http >>/etc/apache1.3/httpd.conf
rm -i $PAGENAME.http
echo restarting apache
/etc/init.d/apache1.3 restart
echo Apache2 virtual host is done
else
clear
echo You must enter 1 or 2
fi
done
В зависимости от выбора пользователя будет выполнятся своя часть скрипта. Собственно весь скрипт тут не важен, а интересна мне именно эта часть:
echo Where do you want to create virtual host?
select opt in "Apache2" "Apache1.3"; do
if [ "$opt" = "Apache2" ]; then
#Apache2
echo -n "Enter pagename:"
read PAGENAME
echo -n "Page will be called $PAGENAME ?"
read REPLY2
if [ "$REPLY2" = "y" ];
then
continue
else
exit 0
fi
Дело в том, что выполняется сценарий только того места, где спрашивается Page will be called $PAGENAME ?
Дальше выполнение прерывается. Я подозреваю, что хитрость в каком-то конфликте между этими условиями
if [ "$opt" = "Apache2" ];
и
if [ "$REPLY2" = "y" ];
Но никак не могу понять, как заставить его работать.
Если нужно, здесь весь скрипт.
function ch {
echo changing home directory permissions:
echo $BASEDIR ...
chown svn.www $BASEDIR
echo $HOMEDIR ...
mkdir $HOMEDIR
chown svn.www $HOMEDIR
chmod 755 $HOMEDIR
mkdir $TMPDIR
chown svn.www $TMPDIR
chmod 1770 $TMPDIR
mkdir $LOGDIR
chown root.www $LOGDIR
chmod 755 $LOGDIR
cp $SKEL $HOMEDIR
}
echo Where do you want to create virtual host?
select opt in "Apache2" "Apache1.3"; do
if [ "$opt" = "Apache2" ]; then
#Apache2
echo -n "Enter pagename:"
read PAGENAME
echo -n "Page will be called $PAGENAME ?"
read REPLY2
if [ "$REPLY2" = "y" ];
then
continue
else
exit 0
fi
BASEDIR=/srv/virtual_2/$PAGENAME
HOMEDIR=$BASEDIR/./html
TMPDIR=$BASEDIR/tmp
LOGDIR=$BASEDIR/logs
GROUP=www
SHELL=/bin/bash
SKEL=/etc/web_skel/index.html
mkdir $BASEDIR
echo changing home directory permissions:
echo $BASEDIR ...
chown svn.www $BASEDIR
echo $HOMEDIR ...
mkdir $HOMEDIR
chown svn.www $HOMEDIR
chmod 755 $HOMEDIR
mkdir $TMPDIR
chown svn.www $TMPDIR
chmod 1770 $TMPDIR
mkdir $LOGDIR
chown root.www $LOGDIR
chmod 755 $LOGDIR
cp $SKEL $HOMEDIR
ch
echo
echo creating webserver configuration ...
sed s/XXXXXX/$PAGENAME/ < /etc/apache2/vserver.proto >$PAGENAME.http
echo please review new server configuration for $PAGENAME
sleep 2
vim $PAGENAME.http
echo appending new configuration to apache configuration file
cat $PAGENAME.http >>/etc/apache2/vhosts.d/vhosts.conf
rm -i $PAGENAME.http
echo restarting apache
/etc/init.d/apache2 restart
echo Apache2 virtual host is done
exit
#Apache1
elif [ "$opt" = "Apache1.3" ]; then
echo -n "Enter pagename:"
read PAGENAME1
echo -n "Page will be called $PAGENAME1?"
read REPLY
if [ "$REPLY" = "y" ];
then
continue
else
exit 0
fi
BASEDIR=/srv/virtual_1.3/$PAGENAME1
HOMEDIR=$BASEDIR/./html
TMPDIR=$BASEDIR/tmp
LOGDIR=$BASEDIR/logs
GROUP=www
SHELL=/bin/bash
SKEL=/etc/web_skel/index.html
mkdir $BASEDIR
ch
echo
echo creating webserver configuration ...
sed s/XXXXXX/$PAGENAME/ < /etc/apache1.3/vserver.proto >$PAGENAME.http
echo please review new server configuration for $PAGENAME
sleep 2
vim $PAGENAME.http
echo appending new configuration to apache configuration file
cat $PAGENAME.http >>/etc/apache1.3/httpd.conf
rm -i $PAGENAME.http
echo restarting apache
/etc/init.d/apache1.3 restart
echo Apache2 virtual host is done
else
clear
echo You must enter 1 or 2
fi
done