← Back to team overview

sslug-teknik team mailing list archive

Re: Automatisk fremstilling af MySQL Databaser som root i BASH

 

Hej Martin.

Jeg har givet dig din vilje. :)
Der anvendes nu ikke længre arrays ved de pågældende løkker :)

Du har talent for at finde fejl. Vil du ikke nok se om du kan finde nogle fejl eller mangler der ødelægger funktionaliteten?

Her er koden:

#!/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 +SymlinksIfOwnerMatch
   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

Hilsen Thomas :)

"Martin Møller Skarbiniks Pedersen" skrev i meddelelsen news:BANLkTikGe2R2s=MbcjVw4+ksHgWr0Y76-w@xxxxxxxxxxxxxx...

On Friday, 22 April 2011, Frank Damgaard <frank_sslug@xxxxxxxxxxxxxx> wrote:
On 2011-04-22 10:58, lars@xxxxxxxx wrote:
 ....


Men hvis man nu kunne få ls til kun at komme med mapper vil det være
bedre. Her tænker jeg på den inderste løkke.


nu ved jeg ikke lige hvilken inderste løkke du tænker på,
men du man da teste for directory med -d  :

 maybedir=.......
 if [ -d "$maybedir" ] ; then
     .....
 fi

Ja og evt. straks tage næste element i listen med continue, hvis
variablen f ikke peger på et directory. F.x.

for f in /home/*
do
  [ ! -d "$f" ] && continue
  echo $f
done

Hilsen Martin



--
--
Til uvedkommende, der læser med: Der er ingen grund til at læse min
mail. Jeg har intet at gøre med FARC, al-Jihad, al-Qaida, Hamas, Hizb
al-Mujahidin eller ETA. Jeg har aldrig gjort Zakat, går ikke ind for
Istishad, har ikke lavet en bilbombe eller kernevåben og jeg ved
dårligt nok, hvad Al Manar og бомба betyder.  Men tak for den udviste
interesse.



References