Criando uma rotina com menu

Iniciado por fabioon9, 30 de Maio de 2012, 15:29

tópico anterior - próximo tópico

fabioon9

Olá pessoal, boa tarde!

Estou precisando saber como fazer um script de uma rotina(não sei se esse é o nome correto), sendo que não sei nada de linux,
absolutamente nada, rs, e tenho que resolver esse problema:


- comece o seu script shell apresentando as seguintes opções de menu (while) para o usuário e execute cada uma delas:


Opções para usuário:


(1) criar três subdiretórios (av1, av2 e av3) no seu diretório home

(2) criar três arquivos (nota1, nota2 e nota3) em av1, av2 e av3 respectivamente

(3) ler as notas (teclado) e armazenar em nota1, nota2 e nota3

(4) mostrar a arvore de diretórios e os conteúdos dos arquivos nota1, nota2 e

nota3

(5) finalizar o menu


- pausa


- continuando o seu script, utilizando comandos de repetição (for) crie 5 arquivos: a1, a2, a3, a4 e a5 no seu diretório home e ao final liste este diretório corrente (home) contendo esses arquivos.


-pausa


- salve todo o conteúdo do seu diretório home em um arquivo de nome arq.tar, utilizando o comando tar.

Com o mesmo comando tar mostre o resultado dessa operação.


-pausa


- entrou um funcionário novo você deve ler o nome desse funcionário e criar uma conta para ele. Como a criação de conta só é possível como usuário root, simplesmente ecoe os comandos que criariam essa conta.


-pausa


- você também deve colocar esse script para ser executado todo o domingo às 14:00hs.



Não tenho a mínima idéia de como fazer isso.

Tota

Ola

Isto está cheirando a lição de casa...ehehehehe

Estudar não é uma opção ?

Vá postando o que já fez ou cite todos os links que pesquisou para o forum poder te ajudar.

Resposta pronta para trabalho de casa dificilmente vão te dar.

A propósito, qual Ubuntu está utilizando?

[]'s

fabioon9

Consegui fazer isso, mas não sei se tá certo e ainda tá faltando coisa:


#!/bin/bash
menu ()
{
echo "
(1) criar três subdiretórios (av1, av2 e av3) no seu diretório home.
(2) criar três arquivos (nota1, nota2 e nota3) em av1, av2 e av3 respectivamente.
(3) ler as notas (teclado) e armazenar em nota1, nota2 e nota3.
(4) mostrar a arvore de diretórios e os conteúdos dos arquivos nota1, nota2 e nota3.
(5) finalizar o menu."

read -p "Opcao:" i
}

menu

while [ $i!=5 ];do

case "$i" in
1)
mkdir av1 av2 av3
;;
2)
touch av1/nota1 av2/nota2 av3/nota3
;;
3)
read -p "Digite a nota av1:" nota
echo $nota > av1/nota1
;;
4)   

;;
5)
exit
;;
*)
echo "Opção inválida!"
;;

esac

menu
done

irtigor

#3
No item 3 faltou ler e armazenar a nota2 e nota3. O 4 você consegue com os comandos ls e cat. No 5 use break no lugar de exit, pra pode continuar com o que está depois de "- pausa". Sugiro a leitura dos seguintes links
http://www.funtoo.org/wiki/Linux_Fundamentals,_Part_1
http://www.funtoo.org/wiki/Bash_by_Example,_Part_1
http://wiki.bash-hackers.org/start
http://mywiki.wooledge.org/EnglishFrontPage

fabioon9

e como eu faria para digitar e armazenar as notas av2 e av3 ?

seria assim ?

read -p "Digite a nota av1:" nota
echo $nota > av1/nota1
read -p "Digite a nota av2:" nota2
echo $nota2 > av2/nota2
read -p "Digite a nota av3:" nota3
echo $nota3 > av3/nota3
;;


Meu grande probelma continua sendo no resto do script:


4) mostrar a arvore de diretórios e os conteúdos dos arquivos nota1, nota2 e

nota3

(5) finalizar o menu


- pausa


- continuando o seu script, utilizando comandos de repetição (for) crie 5 arquivos: a1, a2, a3, a4 e a5 no seu diretório home e ao final liste este diretório corrente (home) contendo esses arquivos.


-pausa


- salve todo o conteúdo do seu diretório home em um arquivo de nome arq.tar, utilizando o comando tar.

Com o mesmo comando tar mostre o resultado dessa operação.


-pausa


- entrou um funcionário novo você deve ler o nome desse funcionário e criar uma conta para ele. Como a criação de conta só é possível como usuário root, simplesmente ecoe os comandos que criariam essa conta.


-pausa


- você também deve colocar esse script para ser executado todo o domingo às 14:00hs.

irtigor

Olhe os comandos e materiais sugeridos. Para os últimos itens, olhe o tar, useradd e cron.

fabioon9

consegui fazer isso, mas não sei como juntar no codigo shell:



continuando o seu script, utilizando comandos de repetição (for) crie 5 arquivos: a1, a2, a3, a4 e a5 no seu diretório home e ao final liste este diretório corrente (home) contendo esses arquivos.
Resposta:

ls -la /home

-pausa

- salve todo o conteúdo do seu diretório home em um arquivo de nome arq.tar, utilizando o comando tar.
Resposta:
tar -czvf arq.tar a1 a2 a3 a4 a5

para descompactar é tar -zxvf arq.tar

Com o mesmo comando tar mostre o resultado dessa operação.
Resposta:
ls -la *.tar
-pausa

- entrou um funcionário novo você deve ler o nome desse funcionário e criar uma conta para ele. Como a criação de conta só é possível como usuário root, simplesmente ecoe os comandos que criariam essa conta.

Resposta:
sudo su -

-pausa


crontab -e
00 14 * * 0 ./<nome do script>


irtigor

#7
Citação de: fabioon9 online 01 de Junho de 2012, 21:30
consegui fazer isso, mas não sei como juntar no codigo shell:
É só copiar e colar. Não tem segredo.
Citação de: fabioon9 online 01 de Junho de 2012, 21:30
continuando o seu script, utilizando comandos de repetição (for) crie 5 arquivos: a1, a2, a3, a4 e a5 no seu diretório home e ao final liste este diretório corrente (home) contendo esses arquivos.
Resposta:

ls -la /home
Faltou o laço for com a criação de 5 arquivos. Reveja os links e/ou use essa referencia http://aurelio.net/shell/canivete/
Citação de: fabioon9 online 01 de Junho de 2012, 21:30
- salve todo o conteúdo do seu diretório home em um arquivo de nome arq.tar, utilizando o comando tar.
Resposta:
tar -czvf arq.tar a1 a2 a3 a4 a5

para descompactar é tar -zxvf arq.tar

Com o mesmo comando tar mostre o resultado dessa operação.
Resposta:
ls -la *.tar
Você salvou os 5 arquivos, não todo o conteúdo do diretório home, comprimiu com o gzip (não foi pedido) e listou o "arq.tar" no lugar do conteúdo dele. Sugestão

tar -cvf arq.tar ~/* # compacta
tar -xvf arq.tar # descompacta
tar -tvf arq.tar # lista

Citação de: fabioon9 online 01 de Junho de 2012, 21:30
- entrou um funcionário novo você deve ler o nome desse funcionário e criar uma conta para ele. Como a criação de conta só é possível como usuário root, simplesmente ecoe os comandos que criariam essa conta.

Resposta:
sudo su -
Errado, "sudo su -" faz login como root.

-----
Outra coisa, "home" no contexto não é /home, é /home/seu-nome-de-usuario, então no lugar de "ls -la /home" use "ls ~", "ls /home/seu-nome-de-usuario" ou simplesmente "ls" porque é o diretório corrente.

fabioon9

Obrigado irtigor por sempre responder as minha dúvidas tão rápido.

Só não conseguir entender como fazer essa parte do for, me ajuda por favor. Já li vários artigos e não entendi:


irtigor

No bash

for i in a{1..5}; do
    > $i
done

fabioon9

Valeu irtigor!
Muito obrigado mais uma vez!