Script em Bash

1. Script em Bash

Lucas
lucasbclima

(usa Lubuntu)

Enviado em 31/05/2013 - 17:04h

Olá galera, estou com um trabalho da faculdade pra fazer e não estou conseguindo desenvolver. Tentei o máximo que deu mas não consigo compreender direito a lógica dos scripts, pois é um pouco diferente da lógica em C ou Java (dos quais não conheço muito, mas são mais fáceis do que o .bash).

Sem mais delongas, vou colocar o meu script e o enunciado abaixo, quem puder ajudar com algo, já agradeço.

-------------------------------------

Desenvolva um script para gerenciamento de backups com as seguintes opções:

1- Mapeia um diretório compartilhado na rede
2- Desmonta um diretório compartilhado
3- Exporta um diretório para ser compartilhado na rede
4- Configura diretório de backup
5- Cadastra um diretório na lista de backups
6- Realize o backup dos diretórios da lista
7- Listas quantos volumes foram gerados para cada diretório da lista de backups
8- Sair

O menu deve ser mostrado ao usuário após a execução de alguma opção. Para sair do programa, o usuário deve escolher a opção 8. Cada opção do menu deve ser executada em uma função.

1- Peça um diretório ao usuário. Se o diretório já estiver mapeado retorne uma mensagem de erro.

2- Mostre a lista de diretório mapeados e pergunte qual diretório o usuário deseja desmontar.

3- Peça um diretório ao usuário. Se o diretório já estiver compartilhado, retorne uma mensagem de erro.

4- Peça para o usuário o IP e NOME do diretório de backup, que deve ser um diretório remoto.

5- Peça para o usuário um diretório que deverá entrar para a lista de backups, armazene esse nome em um arquivo texto, caso ainda não exista.

6- Para cada diretório da lista de backups, faça um volume compactado (tar e gzip) usando o seguinte formato de nome: nome_diretório_hora_minuto_segundo.

7- Faça um loop nos diretórios da lista, e para cada diretório, verifique quantos volumes foram criados no diretório de backup.

8- Pergunte se o usuário deseja realmente sair do script, aceite as seguintes respostas para sim ou não:
Sim: S, s, sim, SIM, Y, yes, YES
Não: N, n, não, Não, NO, no

Caso o usuário digite uma opção entre 9 e 12,retorne a mensagem: "Opção não implementada.", qualquer outra opção, retorne a mensagem de erro: "Opção inválida."

-------------------------------------

#!/bin/bash
clear
$HOME/lista_backup.txt
$HOME/diretorios.txt
op=1
while [ ! $op -eq 8 ]; do
clear
echo "--------------------------------------------------------------------------------"
echo "|----------------------------Digite a opção desejada:--------------------------|"
echo "| |"
echo "|1- Montar um diretório compartilhado na rede. |"
echo "|2- Desmontar um diretório compartilhado na rede. |"
echo "|3- Exportar um diretório para ser compartilhado na rede. |"
echo "|4- Configurar diretório de backup. |"
echo "|5- Cadastrar um diretório na lista de backups. |"
echo "|6- Realizar o backup dos diretórios da lista de backups. |"
echo "|7- Listar quantos volumes foram gerados para o diretório da lista de backups. |"
echo "|8- Sair. |"
echo "| |"
echo "--------------------------------------------------------------------------------"
read op
case $op in

1) clear
echo "Entre com o ip: "
read ip
echo "Entre com o caminho do diretorio a ser mapeado: "
read dir_c
echo "Entre com o nome para o diretorio: "
read nome_dir
mount -t nfs -o rw $ip:$dir_c /mnt/$nome_dir
if [ $? -eq 0 ]; then
echo "Diretorio mapeado com sucesso!"
$dir_c >> $HOME/diretorios.txt
else
echo "Diretorio ja mapeado."
fi
echo "Aperte uma tecla para continuar..."
read
;;

2) clear
echo "cat $HOME/diretorios.txt"
echo "Selecione o diretorio a ser desmontado: "
read dir_d
umount $dir_d
if [ $? -eq 0 ]; then
echo "Diretorio desmontado com sucesso!"
else
echo "Impossivel de desmontar."
fi
echo "Aperte uma tecla para continuar..."
read
;;

3) clear
echo "Digite o diretorio para ser exportado: "
read dir_e
`$dir_e *(rw, sync)` >> /etc/exports
if [ $? -eq 0 ]; then
echo "Diretorio exportado com sucesso!"
else
echo "Erro desconhecido."
fi
echo "Aperte uma tecla para continuar..."
read
;;

4) clear # ???
echo "Digite o nome do diretorio de backup (diretorio remoto): "
read dir_nome
echo "Aperte uma tecla para continuar..."
read
;;

5) clear # ???
echo "Entre com o diretorio para adiciona-lo na lista de backups: "
read dir_bkp
$dir_bkp>>lista_backup.txt
echo "Aperte uma tecla para continuar..."
read
;;

6) clear
tot=`ls lista_bakcup.txt | wc -l`
while [ ! $tot -eq 0 ]; do
vol=`head $tot -n | tail 1 -n`
tar -cf $vol.tar $HOME/bkp_tar
tar -cfz $vol.gzip $HOME/bkp_gzip
if [ $? -eq 0 ]; then
echo "Volumes .tar e .gzip do diretorio $vol criados com sucesso!"
else
echo "Erro desconhecido no diretorio $vol."
fi
tot=$tot-1
done
echo "Aperte uma tecla para continuar..."
read
;;

7) clear # ???
tot=`ls lista_bakcup.txt | wc -l`
while [ ! $tot -eq 0 ]; do
vol=`head $tot -n | tail 1 -n`
ls $HOME/
tot=$tot-1
done
echo "Aperte uma tecla para continuar..."
read
;;

8) clear
echo "Deseja realmente sair?"
read res
case $res in
S|s|sim|SIM|Y|yes|YES) op=8
;;
N|n|nao|Nao|NO|no) op=0
;;
*) echo "Opcao invalida"
echo "Aperte uma tecla para continuar..."
read
esac #fim do while 8
;;

9|1[0-2]) clear
echo "Opcao ainda nao implementada."
echo "Aperte uma tecla para continuar..."
read
;;

*) clear
echo "Opcao invalida."
echo "Aperte uma tecla para continuar..."
read
;;

esac #fim do case

done #fim do while

-------------------------------------

Estou usando o Lubuntu 13.04


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts