Ir para conteúdo
  • Cadastre-se

Shell Script Para Automatizar A Instalação Do Whmcs


Posts Recomendados

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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?