Dúvida em Projeto

1. Dúvida em Projeto

Danilo Vinicius Araújo Alves
LordViper

(usa Debian)

Enviado em 24/11/2015 - 13:49h

Olá pessoal gostaria de saber o que está descrito nestes comandos, o que este script está tentando fazer passo a passo:

function aviso(){
echo "Aviso !!!"
echo $1
read -n1 var_aviso
if [[ "$var_aviso" =~ (C|c|R|r) ]]; then
continue
else
break
fi
}
function backup(){
while true; do
clear
echo "Iniciando o procedimento de backup das pastas /etc e /usr/local..."
data=`date +%d%m`
dia=`date | cut -d" " -f1`
tar -zcvf backup$dia$data.tar.gz /etc /usr/local 1> log_backup 2>&1
ftp -vn $ip << fim
quote user $usuario
quote PASS $senha
put backup$dia$data.tar.gz
quit
fim
rm -f backup$dia$data.tar.gz
aviso "Concluido! Tecle R para repetir ou M para Menu..."
done
}
function remove(){
while true; do
clear
if [ -e /usr/local/bin/provedor.db ]; then
read -p "Informe o Login do cliente a ser removido:" loginr
if [ $loginr ]; then
if [ `grep -c ^$loginr /usr/local/bin/provedor.db` -eq 1 ]; then
read -p "Atenção: Digite R para REMOVER o cadastro de $loginr :" resp1
if [[ "$resp1" =~ [R] ]]; then
sed -i /$loginr/d /usr/local/bin/provedor.db
if [ $? -ne 0 ]; then
aviso "Cadastro NÃO foi removido! Tecle R para repetir ou M para voltar ao Menu......"
else
aviso "Cadastro removido! Tecle C para continuar removendo ou M para voltar ao Menu..."
fi
else
aviso "Remoção cancelada! Tecle R para nova remoção ou M para voltar ao Menu..."
fi
elif [ `grep -c ^$loginr /usr/local/bin/provedor.db` -gt 1 ]; then
aviso "Este login existe em mais de um cadastro! Tecle C para continuar ou M para voltar ao Menu..."
else
aviso "Nenhum cadastro encontrado! Tecle C continuar ou M voltar ao Menu..."
fi
else
aviso "Entrada inválida! Tecle R para repetir ou M para voltar ao Menu..."
fi
else
aviso "Arquivo de cadastro não encontrado! Tecle M para Menu..."
fi
done
provedor
}
function consulta(){
while true; do
clear
if [ -e /usr/local/bin/provedor.db ]; then
read -p "Digite algum dos campos para realizar a consulta:" consulta
if [ $consulta ]; then
if [ `grep -c $consulta /usr/local/bin/provedor.db` -gt 0 ]; then
grep $consulta /usr/local/bin/provedor.db
aviso "Tecle R para realizar outra consulta ou M para Menu..."
else
aviso "Nenhum cadastro encontrado! Tecle R para realizar outra consulta ou M voltar ao Menu..."
fi
else
aviso "Entrada inválida! Tecle R para realizar outra consulta ou M para Menu..."
fi
else
aviso "Arquivo de cadastro não encontrado! Tecle M para Menu..."
fi
done
provedor
}
function adiciona(){
while true; do
clear
read -p "Informe o login do cliente: " login
while [[ ! "$login" =~ [a-z]{3} ]] || [[ `grep -w ^$login /usr/local/bin/provedor.db` ]]; do
read -p "Login já cadastrado ou inválido: (mínimo de 3 caracteres)" login
done
read -p "Informe a Taxa de Download: " taxa
while [[ ! "$taxa" =~ ^[0-9] ]] || [[ ! "$taxa" =~ (k|m)$ ]]; do
read -p "Taxa Inválida! Informe a Taxa de Download: (ex: 128k ou 1,2m)" taxa
done
read -p "Digite o endereço IP: " ip
while [[ ! "$ip" =~ ^([1-2]?[0-9]?[0-9]\.){3}([1-2]?[0-9]?[0-9])$ ]]; do
read -p "IP inválido! Digite um endereço válido: (ex: 8.8.8.8)" ip
done
read -p "Informe o endereço MAC: " mac
while [[ ! "$mac" =~ ^([0-9A-Fa-f]{2}\:){5}[0-9A-Fa-f]{2}$ ]]; do
read -p "MAC inválido! Digite um MAC válido: (ex: a1:b2:c3:11:11:11)" mac
done
echo $login:$taxa:$ip:$mac >> /usr/local/bin/provedor.db
if [ $? -ne 0 ]; then
aviso "Cliente NÃO foi cadastrado! Tecle C para continuar..."
else
grep ^$login /usr/local/bin/provedor.db
aviso "Cadastrado! Tecle C para continuar cadastrando ou M voltar ao Menu..."
fi
done
provedor
}
function infosubdir(){
while true ; do
clear
read -p "Informe o caminho completo do diretório (ex. /etc) :" dir
if [ -d "$dir" ]; then
echo "Os 5 maiores subdiretórios de $dir em kb são :"
du -sk $dir/* | sort -nr | head -n 5
aviso "Tecle C para continuar pesquisando ou M para voltar ao Menu..."
else
aviso "O diretório informado não existe! Tecle R repetir ou M para voltar ao Menu..."
fi
done
}
function infossh(){
while true; do
if [ -e /var/log/secure ]; then
tac /var/log/secure | grep 'Accepted password' | cut -d" " -f1,2,9,11 | head > saidassh
exibessh "/var/log/secure"
elif [ -e /var/log/auth.log ]; then
tac /var/log/auth.log | grep 'Accepted password' | cut -d" " -f1,2,9,11 | head > saidassh
exibessh "/var/log/auth.log"
else
aviso "Arquivos de logs não encontrados! Tecle M para voltar ao Menu..."
fi
done
}
function exibessh(){
clear
echo "ARQUIVO $1 DISPONÍVEL!"
echo "LISTA DOS ÚLTIMOS ACESSOS POR SSH REALIZADAS:"
echo "DATA - USUÁRIO - IP DE ORIGEM"
cat saidassh
rm -f saidassh
aviso "Tecle C para continuar ou outra tecla para o voltar ao Menu:"
}
#####################################################################
# Menu Provedor #
#####################################################################
function provedor(){
while true; do
clear
echo "----------------------------------"
echo "MENU DO PROVEDOR"
echo "----------------------------------"
echo "1-Adicionar cliente"
echo "2-Remover cliente"
echo "3-Consultar"
echo "4-Voltar ao menu principal"
echo "----------------------------------"
read -n1 -p "Digite o número da opção:" op2
case $op2 in
1)adiciona;;
2)remove;;
3)consulta;;
4)menu;;
*)aviso "Opção invalida! Tecle C para continuar";;
esac
done
}
#####################################################################
# Menu Principal #
#####################################################################
function menu(){
while true; do
clear
echo "----------------------------------"
echo "MENU PRINCIPAL"
echo "----------------------------------"
echo "1-Mostrar maiores subdiretorios"
echo "2-Listar acessos SSH"
echo "3-Realizar backup"
echo "4-Controle de clientes do provedor"
echo "5-Sair"
echo "----------------------------------"
read -n1 -p "Digite o número da opção:" opcao
case $opcao in
1)infosubdir;;
2)infossh;;
3)backup;;
4)provedor;;
5)clear; echo "Script Finalizado!"; exit 0;;
*)aviso "Opção invalida! Tecle C para continuar";;
esac
done
}
menu


  


2. res:Dúvida em Projeto

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 24/11/2015 - 15:46h

Olá,
rapaz muito grande esse script, mas olhando por cima
ela faz backup das pastas /etc e /usr/local gera logs e envia para outro servidor.

---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---


3. Re: Dúvida em Projeto

Wagner Souza
wagnerfs

(usa Fedora)

Enviado em 27/11/2015 - 01:07h

Se você é iniciante no linux, recomendo pegar um script mais simples e estudar um pouco mais shell script. Este é extenso. :)
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782



4. Re: Dúvida em Projeto

Danilo Vinicius Araújo Alves
LordViper

(usa Debian)

Enviado em 20/12/2015 - 11:34h

ok amigos obrigado :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts