terça-feira, 7 de junho de 2011

Apresentando o Yad - "zenity melhorado"

Esse artigo foi cedido pelo Raimundo Alves Portela Filho ( "rai3mb" nick no viva o linux ) onde  mostrar uma maravilhosa ferramenta para GUI (Interface Gráfica com o Usuário), que acabou de sair do forno, o Yad, um fork do Zenity ( Já testei e achei bem melhor)  que vem com diversas melhorias, dentre elas a possibilidade de fazer formulários, melhorando a interação do usuário com nossos scripts em shell.

O bichinho é tão recente que nem o manual cobre todas as opções disponíveis
O autor do Yad é o ucraniano Victor Ananjevsky, e a página do projeto pode ser encontrada no:

Mesmo nessa página ainda há pouca informação sobre o uso do Yad, o melhor lugar que achei no momento é o manual dele (man yad) onde temos uma noção do que o Yad pode fazer .

Caso forem buscar informações, pouca coisa ainda está disponível, o manual está datado em “Marth 24, 2011”, e ainda tem o fato de Yad ser o nome de uma ferramenta “...usada em para apontar o texto durante a leitura do Torá...” (Fonte: http://en.wikipedia.org/wiki/Yad). Então ao buscar informações, busque por 'yad fork zenity' vai ser mais fácil.

Ok, vamos em frente pois no artigo pretendo mostrar alguns recursos do Yad, com uns 2 exemplo.

Instalação

Baixe o Yad no link abaixo:

Descompacte:

$ tar –jxf yad-0.11.0.tar.xz

Instale:

$cd yad-0.11.0/
$ ./configure
$ sudo make
$ sudo make install


Pode acontecer dele reclamar de alguma dependência, aqui no meu Debian, reclamou do libgtk2, basta instalar com:

$ sudo apt-get install libgtk2.0-dev


Após instalar, podemos testar com:

$ yad
e irá aparecer na tela

Parabéns o yad esta instalado e funcionado
Agora vamos à parte divertida e viciante, programar

Possibilidades e Exemplos de Uso

A sintaxe básica é :

yad [--tipo-dialogo] [--options]

Abaixo mostro exemplo com os tipos de diálogo:

--calendar (calendário)
--color (paleta de cores)
--entry (entrada de dados)
--icons (mostra uma caixa com ícones de atalho para aplicações)
--file (diálogo para selecionar arquivos)
--font (diálogo para seleção de fontes)
--form (aeeeeeee formulários)
--list (diálogo com ítens em lista)
--notification (mostra um ícone da barra de notificação do sistema)
--progress (diálogo de progresso)
--text-info (mostra o conteúdo de um arquivo texto)
--scale (diálogo para seleção de valor, usando uma escala)

Vamos lá, para cada um dos exemplos coloco o script e depois algumas imagens da sua execução.
Exemplo com " --calendar "
Mostra um calendário permitindo selecionar a data e envia o valor para a saída padrão
Crie um arquivo e edite com o " vi "
 $vi  calendar.sh

#!/bin/bash
# uso do yad com --calendar

# mostra um calendário iniciando com o dia 20/05/2011
# guarda o valor selecionar na variável $DATA
DATA=$(\
        yad --calendar \
        --day=20 \
        --month=5 \
        --year=2011 \
        --date-format=%d\/%m\/%Y \
                --title=Calendario \
                --center \ # disposição do diálogo na tela
)

# mostra um diálogo informando a $DATA selecionada
yad --title="AVISO" \         --text="Você selecionou a data $DATA"

#.EOF
Salve com o nome de "calendar.sh", dê permissão de execução:

$ chmod +x calendar.sh

Execute:

$ ./calendar.sh


Após selecionar uma data:



 Exemplo com " --form "

Uma das novidades que mais gostei: FORMULÁRIOS, não dava pra fazer isso no Zenity, e limitava as entradas do usuário tendo que aprensetar várias telas para coletar dados, o que não é muito prático.
Crie um arquivo e edite com o "vi"
 $vi  form.sh

#!/bin/bash
# yad com FORMULARIOS, que bacana, tem algumas novidades aprecie com calma
HOJE=$(date +%d/%m/%Y)
touch $HOME/cad_usuario.txt

VAR_FORM=$( \
   yad --form \
        --title="CADASTRO DE USUÁRIOS" \
        --width=400 \
        --height=400 \
        --image="accessories-text-editor" \
      --field="Cadastrando em":RO "$HOJE" \
        --field="Nome:" "" \
      --field="Sexo":CB Masculino!Feminino \
      --field="Login:" "$USER" \
      --field="Senha:":H "123456"\
        --field="Ler livro sobre:":RO "" \
      --field="Programação":CHK FALSE \
      --field="Redes":CHK FALSE \
      --field="Linux":CHK TRUE \
      --field="Quantos Filhos:":NUM 0!0..10!1 \
        --field="Foto:":FL "$HOME/Pictures" \
      --field="Salvar dados em:":DIR "$HOME" \
      --field="Cor preferida:":CLR "#00DDDD" \
)

DATA=$(echo "$VAR_FORM" | cut -d"|" -f 1)
NOME=$(echo "$VAR_FORM" | cut -d"|" -f 2)
SEXO=$(echo "$VAR_FORM" | cut -d"|" -f 3)
LOGIN=$(echo "$VAR_FORM" | cut -d"|" -f 4)
SENHA=$(echo "$VAR_FORM" | cut -d"|" -f 5)
#notem que pulei o campo 6, pois o mesmo nao retorna valor útil para nós
LIVRO_PROGRAMACAO=$(echo "$VAR_FORM" | cut -d"|" -f 7)
LIVRO_REDES=$(echo "$VAR_FORM" | cut -d"|" -f 8)
LIVRO_LINUX=$(echo "$VAR_FORM" | cut -d"|" -f 9)
QTD_FILHOS=$(echo "$VAR_FORM" | cut -d"|" -f 10)
FOTO=$(echo "$VAR_FORM" | cut -d"|" -f 11)
SALVAR_EM=$(echo "$VAR_FORM" | cut -d"|" -f 12)
COR=$(echo "$VAR_FORM" | cut -d"|" -f 13)
# repare que o campo $QTD_FILHOS retorna um valor no formato 0.000000
# vc pode usar uma expressão regular, ou o cut, para capturar apenas os digitos antes do .

QTD_FILHOS=$(echo $QTD_FILHOS | cut -d"." -f 1)

#apenas vou mostrar os campos e valores de retorno em um html
DADOS_USUARIO="<table border=1><br/>
         <tr><th>CAMPO</th><th>VALOR</th></tr>
         <tr><td>DATA</td><td>$DATA</td></tr>
         <tr><td>NOME</td><td>$NOME</td></tr>
         <tr><td>SEXO</td><td>$SEXO</td></tr>
         <tr><td>LOGIN</td><td>$LOGIN</td></tr>
         <tr><td colspan=2 align=center>LIVROS</td></tr>
         <tr><td>PROGRAMACAO</td><td>$LIVRO_PROGRAMACAO</td></tr>
         <tr><td>REDES</td><td>$LIVRO_REDES</td></tr>
         <tr><td>LINUX</td><td>$LIVRO_LINUX</td></tr>
         <tr><td>QTD_FILHOS</td><td>$QTD_FILHOS</td></tr>
         <tr><td>FOTO</td><td><img src='$FOTO' /></td></tr>
         <tr><td>DIRETORIO</td><td>$SALVAR_EM</td></tr>
         <tr><td>COR</td><td bgcolor='$COR'></td></tr>
      </table>"

echo $DADOS_USUARIO > cad_usuario.htm

firefox cad_usuario.htm

#.EOF


Salve com o nome de "form.sh", dê permissão de execução:

$ chmod +x form.sh

Execute:

$ ./form.sh


Após preencher o formulário:


Conclusões e Agradecimentos

Estou adorando conhecer o Yad, espero que a comunidade goste também, quanto mais pessoas apoiarem esse projeto, seja usando, seja divulgando, mais temos chances que ele se torne padrão futuramente nas distribuições mais usadas, como Ubuntu.
As possibilidades com o Yad são várias, depende apenas da criatividade,
Esses exemplos foram apenas demonstrativos. No site do projeto,
temos alguns exemplos bem interessantes
Mas ao longo do tempo vou postar aqui vários Scripts com Yad .
O Julio Neves apresentou uma palestra sobre o Yad no CONSEGI ,
 Ele tambem já informou que está trabalhando numa documentação,
onde já tem 70 Paginas acho que logo sai um livro sobre YAD será ?
Quero Agradecer o Raimundo Alves Portela Filho
por ter cedido seu artigo no Viva o Linux
ao Julio Neves pelo seu artigo no Dicas-L onde eu conheci o Yad
e também o Victor Ananjevsky por criar o Yad

Link do Artigo do Raimundo no Viva o Linux

Link do Artigo do Julio Neves no Dicas-L onde eu conheci o yad

Lista de Discussão do Yad no google  o Victor Ananjevsky sempre aparece por lá













quinta-feira, 26 de maio de 2011

dhcpd.conf

#etc/dhcpd.conf
#configuracao do DHCP server

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;

#definindo a rede que o dhcp ira funcionar
subnet 192.168.19.0 netmask 255.255.255.0 {
range 192.168.19.1 192.168.19.199;
option routers 192.168.19.254;
option domain-name-servers 192.168.19.254;
option broadcast-address 192.168.19.255;
}

#maq com ip fixo
host meupc {
hardware ethernet 00:0B:A0:44:E1:13;
fixed-address 192.168.19.235;
}

sábado, 21 de maio de 2011

Simples Barra de Progresso em Dialog

#!/bin/bash

t=0;
while [ $t -lt 100 ];
do t=$[t+1];
echo $t;sleep 0.05;
done\
| dialog --gauge "Carregando o Sistema..." 6 75

sábado, 14 de maio de 2011

Script Realiza Backup em Unidade de Fita DAT

#!/bin/bash
#
# Script para realizar backup e restaurar
# utilizando Dialog
# Versao 0.2
# Daniel Lara Souza
DIA=$( date +%d )
MES=$( date +%b )
ANO=$( date +%Y )
FILE="${DIA}${MES}${ANO}"

 while : ; do
 reposta=$(
    dialog --stdout               \
           --title     ' BACKUP ' \
           --menu    'Escolha um opcao: ' \
           0 0 0               \
           1 'Status Fita Dat'   \
           2 'Efetua Backup na Fita'  \
           3 'Resturacao total da Fita ' \
           4 'Ejetar Fita Dat'       \
           5 'Verifica o Tamanho da Pasta de Restauracao'  \
           0 'Sair'        \
                   )       
   [ $? -ne 0 ] && break

   case "$reposta" in
         
           1) dialog --yesno 'Deseja Continuar ? [s/n]' 0 0
           if [ $? = 0 ]; then
           mt -f /dev/st0 status > /root/fita.txt
           STATUS=$( grep -qs 'ONLINE' /root/fita.txt && echo 'ONLINE' )
           if [ "$STATUS" = ONLINE ]
           then
           echo  ONLINE > /root/statusfita.txt
           else
           echo OFFLINE > /root/statusfita.txt
           fi
           dialog --tailbox /root/statusfita.txt 8 75
           else
            dialog --msgbox 'Processo Cancelado Pelo Usuario !' 5 45
           fi
           ;;
           2) dialog --msgbox 'Efetuando o Backup' 5 45
           sleep 2
           tar -cvf /dev/st0 /dados /etc /var
           ;;
           3) dialog --yesno 'Deseja Continuar ? [s/n]' 0 0
           if [ $? = 0 ]; then
           dialog --msgbox 'Limpando pasta do Backup no Diretorio /Restore ' 5 45
           sleep 2
           # Cria o diretorio  /Restore
           rm -rf /Restore/*
           dialog --msgbox 'Criando Pasta com a Data de HOJE no Diretorio /Restore' 5 45
           mkdir /Restore/$FILE
           dialog --msgbox 'Extraindo o Backup ' 5 45
           sleep 2
           tar -xvf /dev/st0 -C /Restore/$FILE/        
           else
           dialog --msgbox 'Processo Cancelado Pelo Usuario !' 5 45
           fi
           ;;
           4) dialog --yesno 'Deseja Ejetar a Fita DAT ? [S/N]' 0 0
           if [ $? = 0 ]; then
           dialog --msgbox 'Ejetando a Fita Dat' 5 45
           sleep 1
           mt -f /dev/st0 eject
           else
           dialog --msgbox 'Processo Cancelado Pelo Usuario !' 5 45
           fi
           ;;
           5) du -hs /Restore > /root/espacodisco.txt
              df -h >> /root/espacodisco.txt
           dialog --tailbox /root/espacodisco.txt 10 75
           ;;
           0)  break ;;
esac
done

quarta-feira, 12 de janeiro de 2011

Instalando Nagios no Centos 5.5 onde o nagios fica no /etc

Vou mostrar como instalar o nagios no /etc onde por padrão é instalado no
/usr/local/nagios ; instalando no /etc para ficar no padrão dos arquivos
e fica até mais fácil de efetuar backup

Apos instalação do Centos 5.5 efetua a atualização
do sistema

#yum update -y

Após vamos instalar as dependências

# yum install httpd php gcc gcc-glibc-common gd gd-devel -y

Bom agora vamos adicionar o usuário e grupo

#useradd -m nagios
#passwd nagios
#groupadd nagcmd
#usermod -a -G nagcmd nagios
#usermod -a -G nagcmd apache

Agora Crie um Diretório pode ser no /root

#cd /root
#mkdir download
#cd download

Vamos Baixar o Nagios e Nagios Plugin

#wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz

#wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz

Descompactando e instalando o Nagios no /etc

#tar -zxvf nagios-3.2.3.tar.gz
#cd nagios-3.2.3

No ./configure vamos usar o "--prefix=/etc/nagios" para instalar o nagios no /etc

#./configure --prefix=/etc/nagios --with-command-group=nagcmd

#make all

#make install

#make install-init

#make install-config

#make install-commandmode

#make install-webconf

Criando usuário para acesso web nesse caso vamos usar o usuário nagiosadmin

#htpasswd -c /etc/nagios/etc/htpasswd.users nagiosadmin

Instalando o Nagios Plugin

#cd ..
#tar -zxvf nagios-plugins-1.4.15.tar.gz
#cd nagios-plugins-1.4.15

Mesmo parâmetro vamos utilizar para a instalação do nagios-plugins

#./configure --prefix=/etc/nagios --with-nagios-user=nagios --with-nagios-group=nagios

#make

#make install


Iniciando os serviços

#chkconfig nagios on

#chkconfig httpd on

#service nagios start

#service httpd restart

Pronto instalação esta ok  onde o caminho do nagios é /etc/nagios e não
/usr/local/nagios

sábado, 6 de novembro de 2010

Script de Instalar Nagios

Criei um Shell Script para Instalar o nagios eu efetuei testes no Recém saído do forno o Fedora 14 e também no Centos 5
Segue o Script

#!/bin/bash
# Criado por Danniel Lara
# Data 06-11-2010
# Versao 0.1
 
echo " Instalador Nagios "

sleep 1

echo " Baixando Pacotes "

sleep 1
yum install wget httpd php gcc glibc glibc-common gd gd-devel -y

echo "Criando Usuario e grupo "
sleep 1

/usr/sbin/useradd -m nagios

passwd nagios

sleep 1

/usr/sbin/groupadd nagcmd

/usr/sbin/usermod -a -G nagcmd nagios

/usr/sbin/usermod -a -G nagcmd apache

sleep 1

echo "Download Nagios e Plugin"

sleep 1

mkdir /softwares
cd /softwares

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
sleep 1
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz

echo " Extraindo , compilando e instalando "

sleep 1

tar xzf nagios-3.2.3.tar.gz

cd nagios-3.2.3

./configure --with-command-group=nagcmd


make all

make install

make install-init

make install-config

make install-commandmode

make install-webconf

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin


service httpd restart

cd ..

tar xzf nagios-plugins-1.4.11.tar.gz

cd nagios-plugins-1.4.11


./configure --with-nagios-user=nagios --with-nagios-group=nagios

make

make install

chkconfig --add nagios

chkconfig nagios on

service nagios start

segunda-feira, 30 de agosto de 2010

1º Encontro Informal TcheLinix Porto Alegre

encontro TcheLinux na Casa de
Cultura Mário Quintana  ; Mesmo com essa chuva e marcado meio que em
cima do dia foi realizado mesmo assim com com apenas 3 membros do
grupo , claro que Eu ( Daniel Lara ) ,  Edmundo Ribeiro Licker e
Vinicius Matheus Wurzel Onde nos encontramos por volta das 15:30 e
ficamos por ali para vê se aparecia mais alguns participantes do
grupo , andamos por toda a casa de Cultura para verificar se tinha
alguém ali perdido e nada ; mas nada foi em vão , conversamos sobre
vários assuntos qual distro cada um costuma utilizar em casa e no
trabalho , falamos sobre  a utilização de shell scripts para
realizações de backups ,debatemos sobre livros para certificação linux

Eu ( Daniel Lara) ,Edmundo Ribeiro Licker e Vinicius Matheus Wurzel
1º Encrontro Tchelinux Porto Alegre