← Back to team overview

sslug-teknik team mailing list archive

Re: Automatisk fremstilling af MySQL Databaser som root i BASH

 

On 04/18/2011 08:02 AM, Martin Møller Skarbiniks Pedersen wrote:
On Monday, 18 April 2011, Thomas Rosendal Jensen<tarj1974@xxxxxxxxxxx>

Nu har gjort noget du godt vil bryde dig om.
Jeg har bestilt følgende bog fra eLounge.dk :)

Vare nr Titel Antal Pris Total Beløb
0596526784 bash Cookbook 1 310,94 310,94


Det er en rigtig god bog, som jeg også anvender, når jeg underviser i
Shell scripting.

Hilsen
/martin

Så er der mere kode.
Det kan anbefales at bruge en Debian 6.0.1a eller nyere, kørende virtual machine til at teste koden med.

#!/bin/bash
set -x
#
ROOTPASSWD='sencur'
MNDOMN='juac.dk'
MNDOMNUNDERSCORE='Juac_dk'
IP=90.184.106.85
#
#for USRNME in /home/*
USRARRAY=$(ls -l --format=single-column /home/)
for USRNME in ${USRARRAY[@]}
do
 DIR="/home/${USRNME}/PUBLIC_HTML"
 if [ ! -d ${DIR} ];
 then
  mkdir ${DIR}
 fi
 if [ ! -e /home/${USRNME}/PUBLIC_HTML/DB_USER_PASSWD.txt ];
 then
 DBPASSWD=`mkpasswd qwerty`
mysql -uroot -p${ROOTPASSWD} << EOT
create user \'$USRNME\' identified by \'${DBPASSWD}\';
grant all privileges on \'$UNDERSCORENAME\'.* to \'$USRNME \'@\'localhost\';
exit;
EOT
echo "The username of the databases is ${USRNME}. And the password for the databases is ${DBPASSWD}" > "/home/${USRNME}/PUBLIC_HTML/your_databases.txt"
 echo ${DBPASSWD} > "/home/${USRNME}/PUBLIC_HTML/DB_USER_PASSWD.txt"
 fi
#
# for USRDOMN in /home/${USRNME}/PUBLIC_HTML/*
 USRDOMNARRAY=$(ls -l --format=single-column /home/${USRNME}/PUBLIC_HTML/)
 for USRDOMN in ${USRDOMNARRAY[@]}
 do
  LNK=${USRDOMN}.${USRNME}.${MNDOMN}
  UNDERSCORENAME=${USRDOMN}_${USRNME}_${MNDOMNUNDERSCORE}
  echo "USRDOMN:"${USRDOMN}
  echo "USRNME:"${USRNME}
if [ ! -e /home/${USRNME}/PUBLIC_HTML/${USRDOMN}.reserved -a -d /home/${USRNME}/PUBLIC_HTML/${USRDOMN} ];
   then	
   mkdir "/usr/lib/cgi-bin/${UNDERSCORENAME}"	
   echo "<VirtualHost *:80>
 ServerAdmin ${USRNME}@${MNDOMN}
 ServerName www.${LNK}
 ServerAlias ${LNK}
 DocumentRoot ${DIR}/${USRDOMN}
  # Set Document Root directory options
  <Directory />
    Options FollowSymlinks -Indexes Includes
    # Allow use of .htaccess file
    AllowOverride Limit FileInfo
  </Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/${UNDERSCORENAME}
  # Set CGI-BIN directory options
  <Directory /cgi-bin>
    AllowOverride None
    Options +ExecCGI -Multiviews +SymlnksIfOwnerMatch
    Order allow,deny
    Allow from all
  </Directory>
 CustomLog /var/log/apache2/access.log common
 ErrorLog /var/log/apache2/error.log
</VirtualHost>" > "/etc/apache2/sites-available/${UNDERSCORENAME}"
  /usr/sbin/a2ensite ${UNDERSCORENAME}
  echo "${IP} WWW.${LNK} ${LNK}" >> /etc/hosts
  #/etc/init.d/apache2 stop
  #/etc/init.d/apache2 start
  #/usr/sbin/apache2ctl configtest &&
  #/usr/sbin/apache2ctl graceful
  /etc/init.d/apache2 reload
  #DBPASSWD=`mkpasswd qwerty`
mysqladmin create ${UNDERSCORENAME} -u${USRNME} -p< "/home/${USRNME}/PUBLIC_HTML/DB_USER_PASSWD.txt" #echo "The username of the database ${UNDERSCORENAME} is ${USRNME}. And the password for the database is ${DBPASSWD}" > "${DIR}/${LNK}.txt"
  touch /home/${USRNME}/PUBLIC_HTML/${USRDOMN}.reserved
  fi
 done
done



Follow ups

References