Administração servidor WEB com Dialog
Publicado por Anonymous Misteryous 10/04/2008
[ Hits: 7.443 ]
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
Relatório analitico de VLANs no PHP-IPAM
Copiando arquivos de uma so vez para todos usuarios
transformar maiúsculas em minuscula e vice-versa
Gerenciamento de software e hardware de desktop
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Linux é a solução para o fim do Windows10? [RESOLVIDO] (6)
Assinador JNLP do Site Portal da Nota Fiscal Eletrônica (0)
Programa fora de escala na tela do pc (29)









