Jump to content

Shell Script Para Automatizar A Instalação Do Whmcs


Erle Carrara

Recommended Posts

Olá a todos!

Estou fazendo um shell script para instalar o Wordpress (fazer isso na mão é chato e demorado). Porém surgiu um problema simples, não consigo montar a SQL necessária usando o Shel Script, ele lista os diretórios quando encontra "*.*".

Vejam:

SQL="CREATE DATABASE $DB_NAME;GRANT USAGE ON *.* to $DB_USER@localhost identified by '$DB_PASS';GRANT ALL PRIVILEGES ON $DB_NAME.* TO $DB_USER@localhost;"

echo $SQL

Aqui o retorno é algo do tipo:
CREATE DATABASE $DB_NAME;GRANT USAGE ON minhapasta1, minhapasta2, pasta3 to $DB_USER@localhost identified by '$DB_PASS';GRANT ALL PRIVILEGES ON $DB_NAME.* TO $DB_USER@localhost;"[/code]

Alguém sabe como resolver isso?

Link to comment
Share on other sites

Não é para o WHCMS e nem para o Wordpress. É um Shell Script que fiz aqui para instalar o Wordpress na pasta do cliente e já criar o banco de dados, usuário e etc.. Melhor do que fazer isso na mão.

Segue completo:



#!/bin/bash


TARGET_DIR=$1


echo -n "Banco de Dados MySQL: "; read DB_NAME

echo -n "Usuário MySQL: "; read DB_USER

echo -n "Senha do Usuário MySQL: "; read DB_PASS

echo -n "Idioma do WP: "; read LANG


WP_DOWNLOAD_LINK="http://wordpress.org/latest.tar.gz"


echo "installing in \"$TARGET_DIR\""

cd $TARGET_DIR

wget $WP_DOWNLOAD_LINK

tar xf `basename $WP_DOWNLOAD_LINK`

mv wordpress/* ./ && rm wordpres/ -r

mv wp-config-sample.php wp-config.php


sed "s/database_name_here/$DB_NAME/" -i wp-config.php

sed "s/username_here/$DB_USER/" -i wp-config.php

sed "s/password_here/$DB_PASS/" -i wp-config.php

sed "s/'WPLANG', ''/'WPLANG', '$LANG'/" -i wp-config.php


function genrand(){

    MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@$%*()_-=+"

    LENGTH="32"

    while [ "${n:=1}" -le "$LENGTH" ]; do

        PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"

        let n+=1

    done

    echo "$PASS"

}


for i in `seq 0 7`; do

    sed "s/put your unique phrase here/$(genrand)/" -i wp-config.php

    echo $i

done


echo "Vamos criar o banco de dados.";

SQL="CREATE DATABASE $DB_NAME;GRANT USAGE ON *.* to $DB_USER@localhost identified by '$DB_PASS';GRANT ALL PRIVILEGES ON $DB_NAME.* TO $DB_USER@localhost;"


echo "Vamos criar o banco de dados."

echo -n "Usuário root do MySQL: "; read MYSQL_ROOT_USER

echo -n "Senha root do MySQL: "; read MYSQL_ROOT_PASSW

mysql -u $MYSQL_ROOT_USER -p$MYSQL_ROOT_PASSW < $SQL;


echo "Wordpress instalado com sucesso."

Modo de usar: ./wp-install /pasta/onde/vai/instalar/o/wordpress. Responda as perguntas e pronto, WP instalado e configurado.

Mas como disse, estou com problema naquela linha ali que monta a query SQL. Estou quase refazendo o script pra Python aqui, mas Shell Script é melhor pra esse tipo de tarefa.

Link to comment
Share on other sites

Já tentei fazer o escape dos asteriscos de todos os jeitos aqui. Tentei \*.\*, *\.*, '*.*', etc... e nada.

Muito estranho isso, porque em um shell script se eu faço um "TESTE=$(echo *.*); echo $TESTE" ele imprime o conteúdo do diretório atual, mas no terminal eu faço a mesma coisa "echo *.*" e ele tem o comportamento esperado.

Link to comment
Share on other sites

Não sei ao certo, pois não conheço muito bem o WHCMS, mas você pode liberar o seu cliente e rapidamente acessar via SSH e fazer a instalação usando o script acima. Quando o seu cliente entrar o Wordpress já vai está instalado.

Lembro de ter visto alguns hooks na documentação do WHMCS, não deve ser difícil criar algo integrado ao WHMCS.

Link to comment
Share on other sites

Olha, aqui eu criei um arquivo 'teste.sh' dei a permissão +x para ele e coloquei o seguinte código, usando o que o Elisei falou:



#!/bin/bash


echo "Vamos criar o banco de dados.\n";

DB_NAME="BANCOTESTE";

DB_PASS="SENHATESTE";

SQL="CREATE DATABASE $DB_NAME;GRANT USAGE ON '*.*' to $DB_USER@localhost identified by '$DB_PASS';GRANT ALL PRIVILEGES ON '$DB_NAME.*' TO $DB_USER@localhost;";


echo $SQL;

O resultado foi:

Vamos criar o banco de dados.

CREATE DATABASE BANCOTESTE;GRANT USAGE ON '*.*' to @localhost identified by 'SENHATESTE';GRANT ALL PRIVILEGES ON 'BANCOTESTE.*' TO @localhost;

Isso não estaria certo?

Link to comment
Share on other sites

Olha, aqui eu criei um arquivo 'teste.sh' dei a permissão +x para ele e coloquei o seguinte código, usando o que o Elisei falou:



#!/bin/bash


echo "Vamos criar o banco de dados.\n";

DB_NAME="BANCOTESTE";

DB_PASS="SENHATESTE";

SQL="CREATE DATABASE $DB_NAME;GRANT USAGE ON '*.*' to $DB_USER@localhost identified by '$DB_PASS';GRANT ALL PRIVILEGES ON '$DB_NAME.*' TO $DB_USER@localhost;";


echo $SQL;

O resultado foi:

Isso não estaria certo?

Não, o MySQL não aceita a query se tiver o '*.*' apenas se for *.* (sem aspas simples).

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''*.*'

Link to comment
Share on other sites

Conseguistes arrumar o problema?

Estou interessado no plugin.. mas como será o funcionamento dele? Por exemplo:

Vamos supor que tenho um plano específico para clientes wordpress, como faço para este script ir para o diretório do cliente? Crio um script de automação, e coloco naquele plano do WHMCS, e então, após eu aprovar o pedido, o módulo copia o script de minha /home/scripts, e o cliente só deverá acessar o seu site que irá aparecer o script?

Abraços.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?