Administração servidor WEB com Dialog

Publicado por Anonymous Misteryous 10/04/2008

[ Hits: 7.187 ]

Download admin_web_dialog.sh




Construí esse script para o pessoal que administra o servidor web com php e banco de dados instalado. Essa é a idéia principal, para os amantes do shellscript assim como eu ainda requer algumas implementações.

Rodo nas versões 2 e atualmente na 3.1.17(2)-release do BASH. Provavelmente não funcionará na 3.1.17(1)-release (esta versão não gosta dos "()" das funções e outras coisas mais).

Obrigadaço moçada, abraço a todos!

  



Esconder código-fonte

#!/bin/sh

trap ''  2

function Principal ()

{

abertura=$(dialog --stdout --backtitle "UNIVERSIDADE FEDERAL DE MATO GROSSO  POP-RNP/MT" \
--title "Escolha as opcoes:" \
--menu "\n         Danyllo Carvalho\n\n" \
0 0 0 1 'ADICIONAR USUARIO FTP' 2 'MODIFICAR SENHA DE USUARIO FTP' 3 'LISTAR USUARIOS FTP' 4 'CRIAR USUARIOS NO BANCO DE DADOS' 5 'DELETAR USUARIO E BANCO DE DADOS' 6 'MUDA SENHA DE USUARIOS NO BANCO' 7 'SAIR')
   
#   [ $? -ne 0 ] && Principal  # tecla Esc
#   [ $? -eq 1 ] && exit
   if [ "$?" -eq 1 ];
   then
   exit
   fi
   
        if [ "$abertura" == '1' ];
               then
                Criar
        fi

   if [ "$abertura" == '2' ];
           then
              Mudar
        fi

   if [ "$abertura" == '3' ];
                then
                 Listar
        fi
                               
   if [ "$abertura" == '4' ];
            then
            Criarbd
   fi
                                         
        if [ "$abertura" == '5' ];
                 then
            DeletaBD
        fi



   if [ "$abertura" == '6' ];
      then
      Mudarbd
      fi      

   if [ "$abertura" == '7' ];
                 then
                 Sair
        fi
                                             
}


function Criar ()
   {

clear

pasta=$(dialog --stdout --inputbox "Digite o nome da pasta: " 0 0)
        [ $? -eq 1 ] && Principal

var2=$(cat /etc/passwd  |awk -F ":" '{print $1}' |grep -w "$pasta")
                if [ "$var2" ]
                then
dialog --stdout --msgbox "A pasta $pasta existe! Tente novamente com outro nome." 0 0
                Principal
                fi
        if [ "$pasta" == "" ];
                then
dialog --stdout --msgbox "A pasta nao pode ser vazia!! Tente novamente." 0 0
                Principal
                else
                usuario
                fi

   
usuario=$(dialog --stdout --inputbox "Digite o nome de Login do usuario FTP :" 0 0)
         [ $? -eq 1 ] && Principal

   if [ "$usuario" == "" ];
                   then
dialog --stdout --msgbox "O login nao pode ser vazio!! Tente Novamente." 0 0
          Principal

   fi
                                                                           


var=$(grep -w $usuario /etc/shadow |awk -F ":" '{print $1}')

                if [ $var ]
                then
dialog --stdout --msgbox "O login $usuario existe! Tente novamente com outro nome " 0 0
                Principal
                else
                execucao
                fi
}

function execucao ()
{
mkdir   /var/www/htdocs/$pasta
chmod 771 /var/www/htdocs/$pasta
useradd -d /var/www/htdocs/$pasta -s /bin/bash $usuario
/usr/bin/passwd $usuario
chown $usuario.users /var/www/htdocs/$pasta

sleep 5
dialog --stdout --msgbox "Usuario ftp criado com sucesso! " 0 0
Principal
}


function Mudar ()
{
   m_usuario=$(dialog --stdout --inputbox 'Digite o nome do usuario: ' 0 0)
    [ $? -eq 1 ] && Principal
    
      if [ "$m_usuario" == "" ];
                       then
               dialog --stdout --msgbox "O login nao pode ser vazio!! Tente Novamente." 0 0
               Principal
                                       
               fi
                                               
   passwd $m_usuario
   unset $m_usuario
   sleep 3
   dialog --stdout --msgbox "A senha foi Atualizada com Exito!" 0 0

   Principal
}

function Listar ()
{

meu=$(awk -F \: '$3 >= 1000{print $1 $6}' /etc/passwd |sed 's#/# /#' |sed 's/$/ OFF/g')
opcao=$(dialog --stdout --radiolist ' Usuarios          Pastas' 0 0 0 \
$meu)


#echo $opcao

Principal 
}

function Criarbd ()
{
bd_usuario=$(dialog --stdout --inputbox 'Digite o nome do Login do usuario: ' 0 0)
      [ $? -eq 1 ] && Principal
                if [ "$bd_usuario" == "" ];
                    then

dialog --stdout --msgbox "O nome de Login nao pode ser vazio!! Tente Novamente." 0 0
                Principal
      fi      
                                                                      
xstbd=$(mysql -uroot -plalalala -e "SELECT user from mysql.user where user='$bd_usuario';" |sort -u |grep $bd_usuario)
    
       if [  $xstbd ]; 
       then

dialog --stdout --msgbox "O login $bd_usuario existe! Tente novamente com outro nome " 0 0
      Principal
      fi

passbd_usuario=$(dialog --stdout --inputbox 'Digite a SENHA do usuario: ' 0 0)

                 if [ "$passbd_usuario" == "" ];
                 then
dialog --stdout --msgbox "O campo senha nao pode ser nulo! Tente Novamente." 0 0
                Principal
                 fi

banco_usuario=$(dialog --stdout --inputbox 'Agora digite o nome do banco do usuario: ' 0 0)
                if [ "$banco_usuario" == "" ];
                then
dialog --stdout --msgbox "O nome do Banco nao pode ser vazio!! Tente Novamente." 0 0
               Principal
                 fi


procura_banco=$(mysql -uroot -plalalala -e "show databases" |sort -u |grep -w $banco_usuario)
      if [ $procura_banco ];
      then
dialog --stdout --msgbox "O banco $banco_usuario Ja existe em nosas base de Dados, tente outro nome!" 0 0      
                banco_usuario
      fi                                                   
   
dialog                                          \
--title 'Sistema'                              \
--yesno '\nDeseja visualizar as informacoes Inseridas ?
Caso a resposta seja NAO, o sistema nao considerara erros! É altamente recomendável que respondas SIM.
  \n\n'    \
0 0

     test "$?" -eq 0 && info || Executabd

}
function info ()
{
echo "Login do Banco:   $bd_usuario" >/tmp/louro
echo "Nome do banco de Dados: $banco_usuario" >>/tmp/louro
echo "Senha do banco: $passbd_usuario" >>/tmp/louro
dialog --title 'Visualizando Arquivo' --textbox /tmp/louro 0 0


dialog                                          \
--title 'Sistema'                              \
--yesno '\nDeseja Realmente criar este usuario com essas informacoes no Banco?
  \n\n'    \
  0 0
  
   test "$?" -eq 0 && Executabd || Principal
rm /tmp/louro
}


function DeletaBD()
{
banco=$(mysql -uroot -plalalala -e "show databases" |sort -u |sed 's/$/ usuario OFF/g')
opcao=$(dialog --stdout --radiolist ' Banco          Permissao' 0 0 0 $banco)
   [ $? -eq 1 ] && Principal


dialog                                          \
--title 'Sistema'                              \
--yesno "\nDeseja realmente deletar esse BANCO e este USUARIO ?
Sera deletado somente o banco de dados $opcao e o usuario que eh dono dele.
  \n\n"    \
  0 0
  
test "$?" -eq 0 && ExecDeletaBD || Principal

        if [ "$opcao" == "" ];
                then
                dialog --title '!!! ERRO !!!' --msgbox "É preciso selecionar alguma opcao! Note que eh preciso marcar com X na selecao do banco!" 0 0
               Principal
                fi

}                                

function ExecDeletaBD ()
{

   if [ "$opcao" == "" ];
              then
        dialog --title '!!! ERRO !!!' --msgbox "É preciso selecionar alguma opcao! Note que eh preciso marcar com X na selecao do banco." 0 0
            Principal
              fi
                                                               
dialog --title 'INFO' --msgbox "Esta opcao ainda nao esta habilitada no sistema, portanto, nao sera possivel deletar usuarios! POR FAVOR CONTATE O ADMINISTRADOR DO SISTEMA." 0 0
sleep 1

Principal



}

function Executabd ()
{
rm /tmp/louro
   mysql -uroot -plalalala -e "create database $banco_usuario;"
   mysql -uroot -plalalala -e "GRANT usage ON *.* TO $bd_usuario@localhost IDENTIFIED BY '$passbd_usuario';"
   mysql -uroot -plalalala -e "GRANT usage ON *.* TO $bd_usuario@'%' IDENTIFIED BY '$passbd_usuario';"
   mysql -uroot -plalalala -e "GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE ON $banco_usuario.* TO $bd_usuario@'%';"
   mysql -uroot -plalalala -e "flush privileges;"

         unset $banco_usuario
         unset $bd_usuario
         unset $passbd_usuario



dialog --stdout --msgbox "Banco de Dados criado com sucesso!!" 0 0
sleep 3
Principal
}
   
function Mudarbd ()
{

procura_banco=$(mysql -uroot -plalalala -e "show databases" |sort -u |sed 's/$/ usuario OFF/g')
opcao=$(dialog --stdout --radiolist ' Banco          Permissao' 0 0 0 \
$procura_banco)
[ $? -eq 1 ] && Principal

muda_banco=$(dialog --stdout --inputbox 'Agora digite o nome da nova senha: ' 0 0)
[ $? -eq 1 ] && Principal

   if [ "$muda_banco" == "" ];
   then
dialog --msgbox "É preciso inserir uma nova senha!" 0 0
   Principal
   fi

mysql -uroot -plalalala -e "SET PASSWORD FOR '$opcao'@'%' = PASSWORD('$muda_banco');"
mysql -uroot -plalalala -e "SET PASSWORD FOR '$opcao'@'localhost' = PASSWORD('$muda_banco');"
      sleep 2

dialog --stdout --msgbox "Atualizacao de senha efetivada com sucesso!" 0 0
sleep 3
Principal

   
}
Sair() {

dialog                                          \
--title 'LOGOUT'                              \
--yesno '\nDeseja realmente sair?
  \n\n'    \
    0 0
    
            test "$?" -eq 0 && exit || Principal
            

}
Principal


Scripts recomendados

Limitando Banda

Firewall com iproute2 para 2 links com ip fixo

Backup Incremental

Comandos em menu a um clique

Mais um backup


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts