Administração servidor WEB com Dialog
Publicado por Anonymous Misteryous 10/04/2008
[ Hits: 7.501 ]
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!
#!/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
Dell 1390 WLAN (Broadcom 4311)
Montando sua máquina virtual para engenharia reversa em Linux
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - LÊ O BANCO E EXIBE OS DADOS
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Como programar um sistema de controle para distribuições linux em c? (0)
Compartilhar ZEBRA ZD220 na rede (2)
Como programar um software que seja utilizado para coleta de dados em ... (1)









