Administração servidor WEB com Dialog

Publicado por Anonymous Misteryous 10/04/2008

[ Hits: 7.040 ]

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

Fazer backup de todas base de dados no PostgreSQL

Script para controle do Squid e firewall

upload script

Extrair o áudio de arquivos de vídeo

Compartilhamento de conexão


  

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