sexta-feira, 7 de fevereiro de 2014

Shell Script com Dialog - Usando o GAUGE (dialog --gauge)

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog
# yum install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

Este exemplo, usaremos o recurso inputbox, que exibe uma barra de progesso para o usuário. Ela pode ser usada de maneira "fake" ou se preferir, você pode fazer um bom trabalho de programação e torná-la real. No nosso caso, faremos o básico. Caso você tenha a intenção de se aprofundar no assunto, baixe este script de Aurélio e dê uma estudada nele ;) --> http://aurelio.net/shell/dialog/copydir.sh 

Você pode testar direto na linha de comando, ou usar um script.

Faça você mesmo:

# (echo 50; sleep 2; echo 100) | dialog --gauge 'Aguarde... ' 8 40 0

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:








Código fonte do Script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       #
##########################################################
# Exibe uma mensagem simples para o usuario.
dialog --msgbox "Exibindo uma Barra de Progresso \npara o Usuario" 0 0

(echo 50; sleep 2; echo 100) | dialog --gauge 'Aguarde... ' 8 40 0

# Use: (echo % ; comando1 ; echo %; comando2 .. | dialog --gauge...
# Note o exemplo abaixo. A Cada um segundo, 10% da barra sera consumida.

dialog --msgbox "Simulando com o comando Sleep" 0 0

# Obs: A barra invertida quebra a linha esteticamente,
#      Porem nao ha quebra no comando.

(echo 10; sleep 1; \
echo 20; sleep 1; \
echo 30; sleep 1; \
echo 40; sleep 1; \
echo 50; sleep 1; \
echo 60; sleep 1; \
echo 70; sleep 1; \
echo 80; sleep 1; \
echo 90; sleep 1; echo 100) | dialog --gauge 'Aguarde... \n
Simulando com o Comando Sleep' 8 70 0

#Obs: Veja como ficaria este comando sem as barras invertidas dentro de um Script
#(echo 10; sleep 1;echo 20; sleep 1; echo 30; sleep 1; echo 40; sleep 1; echo 50; sleep 1; echo 60; sleep 1; echo 70; sleep 1; echo 80; sleep 1; echo 90; sleep 1; echo 100) | dialog --gauge 'Aguarde... ' 8 40 0

dialog --msgbox "Copiando arquivos..." 0 0

# Coloque entre os echo % as operacoes... Por exemplo:
(echo 10; cp  -R /etc/ /tmp; \
echo 30;  cp -R /etc/ /tmp/; \
echo 60;  cp -R /etc/ /tmp/; \
echo 90; rm -Rf /tmp/etc ; echo 100) | dialog --gauge 'Aguarde... Copiando Arquivos' 8 70 0

read
clear

Baixe este script em:
http://www.reconstrucao.org/palestra/shell/dialog/gauge.sh
Baixe todos os scripts de exemplos dialog:
 http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz 

Shell Script com Dialog - Usando o CHECKLIST (dialog --checklist)

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog
# yum install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

Este exemplo, usaremos o recurso checklist, que exibe uma caixa de múltipla escolha para o usuário escolher um ou mais ítens. Este valor pode ser capturado pelo programador.

Você pode testar direto na linha de comando, ou usar um script.

Faça você mesmo:

# dialog --checklist "Escolha Sua Opcao"  0 0 0 Item1 'Jogar' on Item2 'Dormir' off Item3 'Trabalhar' off

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:






Código fonte do Script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       #
##########################################################
# Exibe uma mensagem simples para o usuario.
dialog --msgbox " Exibindo Checklist \n para o Usuario" 7 30

# Obs: A barra invertida quebra a linha esteticamente,
#      Porem nao ha quebra no comando.

dialog --checklist 'Escolha Sua Opcao' \
       0 0 0 Item1 'descricao do Item1' on \
             Item2 'Descricao do Item2' off \
             Item3 'Descricao do Item3' off \
             Item4 'Descricao do Item4' off \
             Item5 'Descricao do Item5' off \

dialog --msgbox "Capturando as escolhas do Usuario" 7 30

# Capturando as escolhas do usuario.
# Note a presenca do --stdout e do subshell $(comando)
ESCOLHA=$(dialog --stdout --checklist 'Escolha Sua Opcao' \
       0 0 0 Item1 'descricao do Item1' on \
             Item2 'Descricao do Item2' off \
             Item3 'Descricao do Item3' off \
             Item4 'Descricao do Item4' off \
             Item5 'Descricao do Item5' off)

dialog --msgbox "Os Itens Escolhidos foram:: $ESCOLHA" 7 30

clear

quarta-feira, 5 de fevereiro de 2014

História Pura - Primeiro Manual do Unix

Estes dois cidadãos da foto (Ken Tompson e Dennis Ritchie), escreveram o Unix, que com certeza é o início de tudo em relação a Sistemas Operacionais.


Em 1971, foi lançado o manual completo deste SO. Este manual, que foi datilografado na época, foi digitalizado e pode ser acesso através deste link: http://cm.bell-labs.com/cm/cs/who/dmr/1stEdman.html



Boa Leitura!

sexta-feira, 25 de outubro de 2013

Enviar email via Shell Script utilizando o Gmail


Quer aprender a mandar emails utilizando shell script usando a sua conta do Gmail?
Acesse este tutorial do meu amigo Toronto! 
Fonte:

quarta-feira, 16 de outubro de 2013

Frase do Dia

“Concentre-se naquilo que você é bom, delegue todo o resto.”
Steve Jobs

segunda-feira, 23 de setembro de 2013

Frase do Dia

"Tolice, é fazer as coisas sempre do mesmo jeito,
e esperar resultados diferentes..."
Albert Einstein

Dica de Site - Caixa de Ferramenta Linux


Um excelente site com os comandos resumidos... Um verdadeiro canivete suíço!
http://cb.vu/unixtoolbox_pt.xhtml
Dica de Givaldo Lins

quarta-feira, 3 de julho de 2013

segunda-feira, 17 de junho de 2013

Frase do Dia


"Motivação é sempre necessária para as coisas que não queremos fazer"
 Mateusz Grzesiak

quinta-feira, 13 de junho de 2013

Shell Script com Dialog - Usando o INPUTBOX (dialog --inputbox)

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

# yum install dialog


Este exemplo, usaremos o recurso inputbox, que exibe um campo para o usuário digitar um valor. Este valor pode ser capturado pelo programador.
Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:

dialog --inputbox "Digite seu nome" 0 0

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:






Código fonte do Script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #                  
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       # 
##########################################################
# Exibe uma mensagem simples para o usuario.
dialog --msgbox "Solicitando para o \nusuario algum dado..." 0 0

dialog --inputbox 'Por favor digite seu nome' 0 0

#Armazena a escolha do usuario na variavel ESCOLHA
# Note a presenca do --stdout e do subshell $(comando)

dialog --msgbox "Armazenando em uma Variavel \no que o usuario digitou" 0 0

ESCOLHA=$(dialog --stdout --inputbox 'Por favor digite seu nome' 0 0)

dialog --msgbox "O Usuario digitou: \n$ESCOLHA" 0 0
clear

Baixe este script em:

Shell Script com Dialog - Usando o CALENDARIO (dialog --calendar)

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

# yum install dialog


Este exemplo, usaremos o recurso calendário. O calendário, além de exibir par ao usuário um calendário com a data do sistema ( ou com uma data pré-fixada), pode também capturar uma data que o usuário escolheu.
Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:

dialog --calendar "Calendario Atual" 0 0

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:








Código fonte deste script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #                  
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       # 
##########################################################
# Exibe uma mensagem simples para o usuario.
# Obs: A barra invertida quebra a linha esteticamente,
#      Porem nao ha quebra no comando.
dialog --msgbox " Exibindo um Calendario \n \
Com a Data Capturada do Sistema" 0 0

# Exibe um calendario Com Ano,Mes e dia do Sistema
dialog --calendar "Calendario Atual" 0 0

dialog --msgbox " Exibindo um Calendario \n \
Com uma Data Especifica \n (Janeiro de 1972)" 8 40

# Exibe um calendario Com Ano,Mes especificado
dialog --calendar "Calendario de Janeiro de 1972" 0 0 01 01 1972

dialog --msgbox " Exibindo um Calendario \n \
Armazenando em uma variavel \n E exibido a escolha " 8 40

# Armazena a escolha do usuario na variavel DATA
# Note a presenca do --stdout e do subshell $(comando)
DATA=$(dialog --stdout --calendar "Escolha a Data de Pagamento" 0 0 )

dialog --msgbox "A Data Escolhida foi: $DATA" 0 0

clear

Baixe este script em:
http://www.reconstrucao.org/palestra/shell/dialog/calendar.sh
Baixe todos os scripts de exemplos de dialog: 
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz 




Shell Script com Dialog - Usando o MENU (dialog --menu )

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

# yum install dialog


Este exemplo, usaremos o recurso menu, que apenas exibe um menu para o usuário. 
Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:

dialog --menu 'Escolha Sua Opcao'  0 0 0 Item1 'descricao do Item1'   Item2 'Descricao do Item2' 

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:






Código fonte do Script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #                  
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       # 
##########################################################
# Exibe uma mensagem simples para o usuario.
dialog --infobox " Exibindo um menu para o Usuario" 3 40
read

# Obs: A barra invertida quebra a linha esteticamente,
#      Porem nao ha quebra no comando. 

dialog --menu 'Escolha Sua Opcao' \
       0 0 0 Item1 'descricao do Item1' \
             Item2 'Descricao do Item2' \
             Item3 'Descricao do Item3' \
             Item4 'Descricao do Item4' \
             Item5 'Descricao do Item5' 

dialog --infobox "Capturando a escolha do Usuario" 3 40
read

# Capturando as escolhas do usuario.
# Note a presenca do --stdout e do subshell $(comando) 
ESCOLHA=$(dialog --stdout --menu 'Escolha Sua Opcao' \
       0 0 0 Item1 'descricao do Item1' \
             Item2 'Descricao do Item2' \
             Item3 'Descricao do Item3' \
             Item4 'Descricao do Item4' \
             Item5 'Descricao do Item5')
dialog --infobox "O Item Escolhido foi:\n $ESCOLHA" 4 30
read

clear

Baixe todos os scripts de exemplos de dialog: 
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz 

Shell Script com Dialog - Usando o INFOBOX (dialog --infobox )

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

# yum install dialog


Este exemplo, usaremos o recurso infobox, que apenas exibe uma mensagem para o usuário. Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:

# dialog --infobox "Isto é apenas uma mensagem" 0 0 

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:





O Código fonte:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #                  
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       # 
##########################################################
# Um aviso, usando o INFOBOX
dialog --infobox 'Isto e apenas um Alerta!' 0 0

# Este comando da uma pausa ate o usuario pressionar enter
read

dialog --infobox 'Uma Caixa Mais comprida!' 60 0
read

dialog --infobox 'Uma Caixa Mais Larga!' 10 60
read

dialog --infobox "\n Uma Caixa Mais Decente!\n  Com quebra de Linha" 6 29
read

clear


quarta-feira, 22 de maio de 2013

Frase do Dia

"Contrário à crença popular, o UNIX é amigável. 
O que acontece é que ele é muito seletivo quanto às amizades..."

sexta-feira, 10 de maio de 2013

Aula 13 - Permissões especiais GNU/Linux



Tipos de permissões especiais GNU/Linux

Autor: Gabriel Santana
Data: 04/12/2004
Artigo totalmente reproduzido de:

Introdução: SUID, SGUID, STICKY

No artigo anterior  vimos como funcionam as permissões pelo modo octal e literal. Vimos um pouco também sobre o funcionamento do umask.

Agora vamos estudar como funcionam os tipos de permissões especiais, que afetam arquivos executáveis e diretórios: SUID, SGUID e STICKY, conhecidos também como permissões de sistema.

SUID
Se este bit estiver ligado em um arquivo executável, isso indica que que ele vai rodar com as permissões do seu dono (o proprietário do arquivo) e não com as permissões do usuário que o executou.
OBS: Só tem efeito em arquivos executáveis.

SGUID
Faz o mesmo que o SUID, mas agora o arquivo executado vai rodar com as permissões do grupo do arquivo. Se aplicado a um diretório, força os arquivos/diretórios criados dentro dele a ter o mesmo grupo do diretório pai, ao invés do grupo primário do usuário que o criou.

STICKY
Se este bit for ativado, faz com que arquivos criados em um determinado diretório só possam ser apagados por quem o criou (dono) ou pelo super-usuário do sistema. Um exemplo de uso do STICKY é o diretório /tmp.

Tabela de Valores
SUID      4
SGUID  2
STICKY  1

SUID
Para demonstrar o uso do SUID vou dar como exemplo o comando shutdown, que é utilizado para desligar e reiniciar o sistema, mas que só pode ser executado pelo usuário root. Mesmo se você der permissão através do "chmod 755 /sbin/shutdown", o usuário comum não vai conseguir realizar a execução deste, somente o root.
Vamos lá!

# groupadd shutdown
# gpasswd -a gabriel shutdown
# chown root:shutdown /sbin/shutdown
# chmod 4750 /sbin/shutdown
# ln -s /sbin/shutdown /bin/shutdown

Comentários dos comandos acima:
groupadd : adiciona um novo grupo ao sistema.
gpasswd -a : adiciona um novo membro a um grupo.
chown : : muda o dono e o grupo de um arquivo/diretório.
chmod : liga o bit SUID junto com as novas permissões.
-ln -s : cria um link simbólico de um arquivo/diretório.

Agora, logue-se novamente no shell:
# su - gabriel

Agora teste o comando shutdown. Não esqueça de voltar e terminar de ler o artigo ;D.
# shutdown -h now

OBS 1: Reparem que, se olharmos as permissões do comando shutdown, veremos um 's' na permissão do dono no lugar do 'x', isto indica que o bit SUID está ligado.
OBS 2: 'su - gabriel' utilizei para que o sistema atualize-se e reconheça que o usuário 'gabriel' agora faz parte também do grupo shutdown. Outra forma de fazer isso seria logar-se novamente, o que seria chato pois seria necessário sair do X. Caso conheçam uma outra maneira de fazer a mesma coisa favor postem aqui.


SGUID
O bit SGUID tem a mesma função do bit SUID, só que agora é usada a permissão do grupo do arquivo para executá-lo. O SGUID também tem uma outra função, que funciona em diretórios. Quando este bit está ligado em um diretório ele possibilita que todos arquivos/diretórios criados dentro dele pertençam ao mesmo grupo desse diretório.
Vamos a um exemplos para que possamos entender.

# cd /tmp
# mkdir publico
# ls -l publico
drwxr-xr-x  2 root root  48 2004-11-24 21:21 publico

Veja que só o root pode escrever nele, ou seja, criar arquivos e diretórios.

Vamos ligar o bit SGUID neste diretório.

# chmod 2777 publico
# ls -l publico
drwxrwsrwx  2 root root  48 2004-11-24 21:21 publico

Observe que o 's' indica que o bit SGUID está ligado. Agora entre neste diretório com outros usuários, crie arquivos e diretórios, e repare que os arquivos e diretórios criados pertencem ao mesmo grupo do diretório pai (diretório antecedente).

Exemplo:
$ mkdir testando
$ ls -l
drwxr-sr-x  2 linuxba root 48 2004-11-24 21:31 testando

Vamos para o próximo.

STICKY
Bom, o bit STICKY não tem segredo. Como vocês já sabem, ele faz com que um diretório funcione igual ao diretório /tmp, onde todos os usuários podem criar arquivos/diretórios mas só o próprio dono do arquivo/diretório ou o usuário root podem excluí-los.

# cd /tmp
# mkdir corrimao
# chmod 1777 corrimao

$ cd /tmp/corrimao
$ mkdir teste

# ls -l
drwxr-xr-x  2 linuxba users 48 2004-11-24 21:47 teste

Vamos dar uma olhada na conclusão. ;D

 Conclusão
Bom, é isso ai pessoal, este artigo na verdade é uma continuação do artigo anterior, onde foram abordados os tipos de permissões do sistema GNU/Linux.

Para que você aprenda (e não decore) o que foi passado neste artigo, pratique e tente entender a lógica da coisa, pois assim você vai aprender e será muito difícil de esquecer. E fiquem à vontade quanto aos comentários.

Artigos recomendados:

Até a próxima!

Gabriel Santana
Nick: m4sk4r4
CompactNick: m4sk




segunda-feira, 6 de maio de 2013

Frase do Dia

"... eu vejo um museu de grande novidades... "
Cazuza