Ho lavorato su questo piccolo script ed è quasi arrivato il punto in cui posso iniziare a usarlo.
L'idea è di automatizzare le installazioni di WordPress tramite Plesk.
Ho installato Plesk con un cronjob per scaricare il latest.tar.gz da wordpress.com ed estrarlo ogni mattina e ora sto cercando di automatizzare il processo di creazione del database.
Ho il seguente script bash:
#!/bin/bash/
#To whoever is working on this
#this script simply sets up the DATABASE for the new domain added to the server
#it then logs it, mails the details and clears the log
genpasswd() {
local pass=`cat /dev/urandom | tr -cd "[:punct:]" | head -c 2`
echo "$pass"
}
echo $NEW_DOMAIN_NAME >> /usr/games/newdomain.txt
DOMAINNAME=`echo $NEW_DOMAIN_NAME | grep -oE '/[^/]+' | cut -c6- | rev | cut -c4- | rev`
rndChr=$(genpasswd)
CHAR2=${$DOMAINNAME:1:1}
CHAR4=${$DOMAINNAME:3:1}
echo $CHAR2$CHAR4 >> /usr/games/passChar.txt
#get our db stuff
DATABASENAME='exsite_'$DOMAINNAME
DATABASEUSER='exsite_'$DOMAINNAME
DATABASEPASS='[exSite_'$CHAR2$rndChr$CHAR4']'
#create our mail content
CONTENTS="<strong>New MySQL Database created</strong> - <i>see the login details below.<i><p><strong>dbname</strong> $DATABASENAME<br><strong>dbuser</strong> $DATABASEUSER<br><strong>dbpass<strong> $DATABASEPASS"
#log it
echo -e $CONTENTS > /usr/games/dbLog.txt
#mail it
sendMail() {
cat << 'EOF' - /usr/games/dbLog.txt | /usr/sbin/sendmail -t
To: servers@exsite.ie
From: Enterprise
Reply-to: alex@exsite.ie
Subject: [DB Info] for $NEW_DOMAIN_NAME on enterprise.exsite.co
Content-Type: text/html
EOF
printf "STATUS: Mail sent!"
}
if [[ $(sendMail) ]]
then
printf "STATUS: Doing mail thing!"
else
printf "STATUS: MAIL-FAIL!!"
fi
#clear dbLog.txt
exit
So che non è la sceneggiatura più piccola, ma è un work in progress e il mio primo script di bash è così semplice con me.
Si verificano due problemi ma non capisco perché;
Le variabili CHAR2 e CHAR4 non sembrano raccogliere il 2 ° e il 4 ° carattere di $ DOMAINNAME - vengono semplicemente visualizzati vuoti in passChat.txt
$ NEW_DOMAIN_NAME passa a newdomain.txt ma poi la riga successiva in cui provo a restituire solo il dominio di secondo livello sembra non riuscire. Funzionava in un momento precedente ma non è ora. Non avevo cambiato quella parte però.
$NEW_DOMAIN_NAME
Assomiglia a? Non riesco davvero a ingannare ciò che quella linea grep | cut | rev | ... dovrebbe fare
CHAR2=${DOMAINNAME:1:1}