J'ai travaillé sur ce petit script et c'est à un point que je peux commencer à l'utiliser.
L'idée est d'automatiser les installations de WordPress via Plesk.
J'ai installé Plesk avec un fichier cronjob pour télécharger le fichier latest.tar.gz de wordpress.com et l'extraire tous les matins. Maintenant, j'essaie d'automatiser la création de bases de données.
J'ai le script bash suivant:
#!/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
Je sais que ce n'est pas le script le plus sophistiqué, mais que c'est un travail en cours et que mon premier script bash est tellement nu avec moi.
Deux problèmes se posent mais je ne comprends pas pourquoi;
Les variables CHAR2 et CHAR4 ne semblent pas capturer les 2ème et 4ème caractères de $ DOMAINNAME - elles sortent simplement vides dans passChat.txt
$ NEW_DOMAIN_NAME va dans newdomain.txt, mais la ligne suivante où j'essaie de renvoyer uniquement le domaine de 2e niveau semble échouer. Cela fonctionnait plus tôt, mais ce n'est pas maintenant. Je n'avais pas changé cette partie cependant.
$NEW_DOMAIN_NAME
ressemble? Je ne peux pas vraiment dire ce que cette ligne grep | cut | rev | ... est supposée faire
CHAR2=${DOMAINNAME:1:1}