16 de nov. de 2007

Esboço - Shell Script

Curso Shell Script
Pelo: OLinux
Aula I

Intro

Tipos de shell: bash, csh, ksh, ash, etc. O mais utilizado é o bash (GNU Bourne-Again SHell).

Quando executado o shell script, o shell aonde foi executado, irá abrir um novo shell para executar este script. A não ser que seja especificado que execute no shell atual.

Variáveis de ambiente

É onde o shell armazena determinados valores para utilização posterior.
Possui nome e valor, podendo o valor ser vazio.

Para definir uma variável é preciso nomea-la e dar o seu valor, por exemplo:
cor=azul

Para utilizar o valor da variável, é preciso colocar o sinal cifrão ( $ ) seguido do nome da variável. Por exemplo:
echo $cor

Para delimitar o nome de uma variável utiliza-se chaves ( {} ) entre o nome da variável. Por exemplo:
echo ${cor}-escuro

Formato dos arquivos de Shell Script

A primeira linha de todo shell script começa com:
#!/bin/tipo-de-shell-utilizado
Por exemplo, com o shell bash:
#!/bin/bash

O comando find / -name file -print ,procura na raíz por um arquivo de nome "fle".
Para que não ficar executando este comando toda vez que pesquiso o arquivo "fle", crio um script que faça isso:

#!/bin/bash
find / -name file -print

Salvo o arquivo como procura e deixo-o como executável:
chmod 755 procura

Para especificar um arquivo que quero procurar, devo executar o script seguido o nome do arquivo que procuro.
Utilizo a "variável de parâmetro".
Por exemplo:
#!/bin/bash
find / -name $1 -print

Isto fará que o bash leia $1 substituindo ele pelo arquivo procurado.
Por exemplo:
./procura firefox

Fim da primeira aula

10 de nov. de 2007

Linguagem de Internet

Esboço feito em estudo para a prova de redação no vestibular.
==============================================

Linguagem de Internet


A internet atrai diversas culturas pelo mundo, o que faz com que as línguas sejam trabalhadas de forma que essas culturas venham cruzar e difundir a escrita. Em um país como o Brasil, que pouco se lê e escreve menos ainda, é comum assistirmos ao assassinato da língua portuguesa, por uma linguagem inferior a norma culta, adaptada em boa parte por adolescentes.

Em salas de bate-papos, softwares de mensagens intântaneas e comunidades online (rede de amigos), os jovens não sentem a necessidade de usufruir a culta língua portuguesa, estabelece uma escrita alimentada por abreviações, como uma espécie de código entre eles. Podemos dizer que a linguagem de internet é uma nova escrita para a cultura na internet. Isto faz com que ao comunicar-se em algum tipo de reunião metódica, o portador desta cultura, estaja inábil à comunicação culta.

Hoje, qualquer um pode ter seu blog na internet, usando a escrita que desejar, sem que receba pressão para que seja instruído ao que poderíamos de chamar de linguagem adequada. Ocorre que as escolas não intimidam seus estudantes a ler com tanta frequência, é raro termos jovens que leêm ao menos três livros, seja ele técnico ou não. As revistas e jornais impressos nas mãos de um adolescente é algo pouco frequente de estarmos presenciando. Encontramos um rebaixamento para a cultura escrita sobre a língua portuguesa.

9 de nov. de 2007

Esboço - UML

Cursinho de UML
Comunidade CDTC - Centro de Difusão de Tecnologia e Conhecimento

Lição 1 - Introdução

UML (Unified Modeling Language)

Linguagem de modelagem.
Orientada a objetos.

Criadores: Booch, OMT (Rumbaugh) e OOSE (Jacobson).

Lição 2 - Conceitos iniciais

Diagrama é uma representação gráfica. Em UML divide-se em dois grupos: estruturais e comportamentais.

Lição 3 - Diagramas Estruturais

Em hierarquia:
Classes: considera um conjunto de objetos.
Atributos: define a propriedade do item modelado.
Métodos (operações): executam as funcionabilidades.

Atributos e métodos podem ser mostrados:
+ Corresponde a operações públicas;
# Corresponde a operações protegidas;
- Corresponde a operações privadas.

Representação entre os relacionamentos das classes são divididos em três tipos: dependências, generalizações e associações.

Dependência:
item que usa dados e serviços de outro item.
É representado com uma linha tracejada do item que depende ao que a fornece.

Generalização:
Relacionamento entre ítens gerais e mais específicos. Ítens específicos tem todos os atributos e métodos da classe geral, além de poder ter os seus próprios também.

Associação:
permite aos objetos comunicarem uns com os outros. Cria a estrutura comum para várias ligações entre os objetos.
São representadas em linhas que ligam as classes participantes na relação, podendo mostrar as variedades dessas classes. As multiplicidades são mostradas num intervalo (mín...máx), sendo sempre positivos e se infinito, no no valor máx. deve ser introduzido um asterisco (*).

Agregação: (associação)
representadas com um losango ao lado do 'todo'.
Classes participantes que não tem um estado equivalente, são relacionadas 'do todo' para as partes'.
O 'todo' é uma classe que sempre tem uma multiplicidade de outras classes.

Composição: (associação)
representada por um losango cheio ao lado do 'todo'.
caso as partes definitivamente, dependam do 'todo'.

Diagramas de classes identificam e mostram as características das classes que compõe o sistema. Mostrando em conjunto, seus métodos, atributos e relacionamentos.

Interfaces:
Estabelece uma ligação entre classes distintas.

Tipos de dados:
Dados inteiros e lógicos.

Enumerações:
Lista de valores. Opções de enumeração é conhecida como 'Literais de Enumeração'.

Pacotes:
Representa partes de um sistema que contém mais de uma classe.

Objetos:
Representa algo concreto.
Nomes dos objetos sempre deverão estar sublinhados.

Diagrama de Objetos:
Exemplica diagramas de classes.
Mostra todo o conteúdo das classes.

Diagrama de Componentes:
Componente é independente e pode ser utilizado com outros componentes.
É difundido em executável, biblioteca, tabela, documento e arquivo.
Mostra os componentes e seus relacionamentos. Não mostra todo o seu conteúdo. Para conteúdo é utilizado no diagrama de execução.

* Modelar os componentes do código-fonte, do código executável do software;
* Organizar o código fonte, mostrando as dependências entre os diferentes arquivos fonte de modo que fique claro quais arquivos precisarão ser recompilados quando for feita uma modificação em algum deles;
* Destacar a função de cada módulo para facilitar a sua reutilização;
* Auxiliar no processo de engenharia reversa, por meio da organização dos módulos do sistema e seus relacionamentos.

Diagrama de Artefatos:
Um produto dentro do sistema.
Pode ser um documento de texto, código fonte, um programa executável, uma biblioteca, etc.
Mostra a organização dos artefatos e seus relacionamentos.
Modelagem de:
# Código fonte;
# Versões executáveis;
# Bancos de dados físicos;
# Sistemas adaptáveis.

Diagrama de Implantação:
Organização do hardware.
Máquinas chão chamadas de nó.
Diagramas de classes que mostram os nós do sistema e os artefatos que existem neles.

Lição 4 - Diagramas Comportamentais

Atores:
Representam pessoas, dispositivo de hardware ou outro sistema, ou seja, representa regras dos usuários do sistema.
São eles quem:

* Utilizam o sistema.
* Inicializam o sistema.
* Fornecem os dados
* Usam as informações do sistema

Casos de uso:
Descreve uma funcionabilidade fornecida pelo sistema.
* Cada Caso de Uso está relacionado com no mínimo um ator;
* Cada Caso de Uso possui um iniciador (isto é um ator);
* Cada Caso de Uso liga-se a um resultado relevante (um resultado com "valor de negócio").

Os três tipos mais comuns de relacionamento entre Casos de Uso são
* <> que especifica que um Caso de Uso toma lugar dentro de outro Caso de Uso;
* <> que especifica que em determinadas situações, ou em algum ponto (chamado um ponto de extensão) um Caso de Uso será estendido por outro;
* Generalização especifica que um Caso de Uso herda as características do "Super" Caso de Uso, e pode sobrepor algumas delas ou adicionar novas de maneira semelhante a herança entre classes.

Diagrama de casos de uso:
Ilustra os comportamentos do programa.
Descreve relacionamentos e dependêncuas entre grupo de caso de uso e os atores do processo.
relacionamento é representado por uma linha reta.

Diagrama de sequencia:
Mostra a sequencia dos processos num sistema.
Objetos são representados através de linhas verticais tracejadas, como nome do objeto no topo.
O eixo do tempo também é vertical, aumentando para baixo. As mensagens enviadas de um objeto para outro são em formas de setas com a operação e nome dos parâmetros.

Diagrama de colaboração:
Mostra a relação que ocorre entre os objetos numa situação específica, dando ênfase em como as interações ocorrem no tempo.
Mensagens enviadas de um objeto a outro são representadas por setas, com o nome da mensagem, parâmetro, e a sequência da mensagem.

Estados:
Pertence a uma classe e representa valores que uma classe pode tomar.

Diagramas de estados:
Mostram os diversos estados de um objeto.

Atividade
É um estado no sistema com atividade interna e que possua pelo menos uma transição de saída.

Diagrama de atividade:
São sempre associados a um Classe, uma Operação ou um Caso de Uso.

8 de nov. de 2007

Referência rápida de comandos

bg
coloca a tarefa em segundo plano
cat
mostra o conteúdo do arquivo na saída padrão
cd
muda para diretório indicado
chmod
modifica as permissões de arquivos ou diretórios
chgrp
muda permissões de grupo de arq./dir.
chown
muda o prorpietário/grupo de arquivos/diretórios
clear
limpa terminal atual
cp
copia arquivos e/ou diretórios par aum destino
cut
recorta colunas ou campos de texto ou arquivos
diff
mostra a diferença entre dos arquivos/diretórios
dos2unix
convrte um arquivo texto DOS para o Linux
echo
"Ecoa" o conteúdo indicado na saída padrão
exit
sai do terminal atual
expand
substitui tabulações por espaços
file
mostra o tipo de arquivo
find
procura por arquivos em um diretório
fg
traz a tarefa do segundo plano para o primeiro
grep
filtra o conteúdo de um arquivo
head
mostra o início (10 linas) de um arquivo
help
mostra a ajuda de determinado comando
history
exibe o histórico de comandos do usuário
info
mostra a página info (ajuda) de um comando
less
mostra o conteúdo do arquivo com pausas, permitindo interação no texto
locate
procura arquivos de acordo com o padrão indicado
in
cria links para arquivos ou diretórios
ls
lista coknteúdo de diretórios
man
mostra a página de manual do comando
mkdir
cria diretórios
more
mostra o conteúdo do arquivo com pausas
mount
monta o dispositivo
mv
move ou renomeia arquivos/diretórios
pwd
mostra em que diretório o usuário se encontra
reset
restaura o etado inicial de um terminal
rm
remove arquivos e/ou diretórios
rmdir
remove diretórios (desde que vazios)
sort
ordena o conteúdo de um arquivo
tail
mostra o final (10 linhas) de um arquivo
tr
altera o arq. e cria um novo arq. com a mudança
tree
exibe a estrutura de arquivos em árvore
umask
define a máscara de criação de arq. do usuário
unix2dos
converte um arquivo texto Linux para o DOS
wc
Exibe o número de linhas, caracteres ou palavras
whereus
Exibe informações sobre comando (ex: fontes)
which
exibe o caminho para um comando
xhost HOST
libera o acesso de uma máquina remota ao servidor X local
export DISPLAY=host
exporta a variável DISPLAY, para utilizar aplicativo gráfico remeto
X -query HOST
executa todo o ambiente X remotamente
mount
umount
Monta/desmonta um sistema de arquivos
df
mostra a utilização de espaço em disco
fdisk
ferramenta interativa para criar partições em disco
mkfs
cria um sistema de arquivos
fsck
verifica o estado de um sistema de arquivos, corrigindo possíveis erros
mkswap
formata uma particição para ser utilizada como área de swap
quotaon
quotaoff
Liga/desliga as quotas do sistema
edquota
configura as cotas de usuários e grupos
repquota
quota
visualiza a situação das quotas no sistema
pvscan
procura PVs (volumes físicos) em todos os discos
pvcreate
cria um PV num dispositivo de bloco
pvdisplay
mostra informações sobre o PV
pvmove
Move PEs (entensões físicas) entre PVs (volumes físicos)
vgscan
procura PVs e VGs (grupos de volumes) em todos os discos
vgdisplay
motra informações sobre o VG
vgextend
vgreduce
Adiciona/romove pVs a UM VG
vgconvert
Converte o formato dos matadados de um VG
lvscan
procura LVs (volumes lógicos) em todos os VGs
lvcreate
lvremove
cria/remove um LV no VG indicado
lvdisplay
mostra informações sobre o LV
lvextend
lvreduce
aumenta/reduz o tamanho de um LV
raidstar
raidstop
ativa/desativa um dispositivo RAID
mkraid
Cria um dispositivo RAID especificado
lsraid
Obtém informações sobre dispositivos RAID so sistema
make menuconfig
make xoncifg
abre o configurador da compilação do kernelmore
uname -a
mostra informações do sistema (kernel, hostname, versão)
insmod
rmmod
lsmod
insere/remove/lista módulos do kernel
modprobe
insere/remove módulos
mkinitrd
cria o ramdisk inicial (initrd)
modinfo
mostra informações sobre o módulo
depmod
gera modules.dep e mapas

-----------------
Exemplos genéricos de comandos

$ find / -name nome_arquivo
Procura arquivos com o nome nome_arquivo

$ ls etc | grep fs
lista o conteúdo de /etc que contenha a string fs no nome

$ cat arq | grep filtro
exibe as linhas do arquivo arq que contenham "filtro"

$ tail -f /var/log/messages
Mostra as 10 últimas linhas do arquivo

$ ls /etc/*.conf
Lista todos os arquivos com extensão .conf em /etc

$ mv /etc/arquivo_genérico .
move o arquivo_genérico de /etc para o diretório local

$ file arquivo.extensão
visualiza o tipo de arquivo

$ cat /etc/passwd | more
a visualização de /etc/passwd é paginada

$ ls -l > arquivo
o resultado da listagem vai para o arquivo

# xhost desktop.empresa
libera o cesso do servidor X local para a máquina desktop.empresa

#mount -t vfat /dev/hda3 /mnt/montagem
Monta dispositivo /dev/hda3 de sistema de arquivos doo tipo vfat, no ponto de montagem /mnt/montagem

#fsck -cp /dev/hda1
checa se o dispositivo /de/hda1 contém "bad blocks", fazendo o seu reparo automaticamente

#lvremove -f /dev/vg00/lv01
Remove o LV (voulme lógico) /dev/vg00/lv01

# mkinitrd -v 'uname -r'
Verifica se existe o initrd a partir da saísa do comando uname -r

Fonte: apostila impressa conectiva

Referência Rápida dos Arquivos

/etc/X11/XF86Config-4
Configuração do XFree86

/usr/lib/kde3/share/config/kdm
Configuração do kdm

/etc/X11/xdm
Configuração do gerenciado de display xdm

/etc/X11/gdm/gdm.conf
Configuração do gerenciado de display gdm

/etc/pam.d
Localizam odos os arquivos de configuração do PAM

/etc/pam.d/login
Configuração do programa login

/etc/securetty
Configuração de terminais autorizados para a utilização do módulo pam_securetty

/etc/pam.d/xdm
/etc/pam.d/kdm
/etc/pam.d/gdm
Configuração do PAM nos gerenciadores de display

/etc/pwdb.conf
Configuração do módulo pam_pwdb

/etc/nologin
Configuração do mpodulo pam_nologin

/etc/security/console.perms
Permissão do primeiro usuário a fazer login no sistema

/etc/fstab
Configuração de sistemas de arquivos e seus pontos e opções de montagem

/etc/auto.master
Configuração do autofs

/etc/init.d/autofs
Script de inicialização do serviço autofs

/etc/sysconfig/quota
Habilitação de quotas para usuários, grupos ou ambos

/etc/init.d/quota
Script de inicialização do serviço de quota

/etc/raidtab
Especificação dos dispositivos RAID do sistema

/dev/mdX
Dispotivios de bloco associados aos arrays de disco, onde X é o número do dispositivo.

/etc/init.d/raid
Script de inicialização do serviço RAID

/boot/vmlinuz-
Carregado na inicialização do sistema

/etc/modprobe.conf
Ficam as configurações dos módulos utilizados pelo sistema

/etc/lilo.conf
Configuração do gerenciador de boot LILO

/boot/gurb/menu.lst
Configuração do gerenciador de boor GRUB

/proc/cmdline
Parâmetros passados na inicialização do sistema

/etc/cups
Encontram os arquivos de configuração do gerenciador de impressão CUPS

Fonte: apostila impressa conectiva

Referência Rápida de Diretórios

/bin
Aplicativos e utilitários usados durante a inicialização e que são necessários quando nenhum outros sistema de arquivos está montado.
/boot
kernel e tudo o que é necessário ao processo de boot.
/dev
Arquivos que fazem referência a dispositivos de hardware, como disco, portas de I/O, memória, etc.
/etc
Arquivos e outros diretórios de configuração de aplicativos, que são específico a máquina.
/home
Diretórios de trabalho dos usuários do sistema
/lib
Bibliotecas compartilhadas necesserárias para inicializar o sistema e execução decomandos existentes no sistema de arquivo raiz, além de módulos do Kernel.
/mnt
Pontos de montagem locais para alguns dispositivos.
/opt
Utilizado para que programas desenvolvidos por terceiros possam ser instalados. Diretório opcional num sistema Linux.
/proc
É um sistema de arquivos virtual, onde estão disponíveis informações e configurações do kernel. Também contém informações sobre processos em execução e configurações gerais como IRQs e portas de I/O.
/root
Diretório pessoal do usuário root.
/sbin
Arquivos executáveis, interessantes à administração e inicialização do sistema, em adição aos binários /bin.
/srv
Estruturas de arquivos e diretórios utilizados para determinados serviços.
/sys
sistema de arquivo virtual, bastante parecido com o /proc, com a função de mostrar informações sobre o sistema.
/tmp
Arquivos temporários, criados por qualquer usuário do sistema.
/usr
Extensa estrutura de diretórios com arquivos executáveis, bibliotecas, documentação, arquivos estáticos em geral utulizados por progrmas, o sistema de janelas X e jogos, entre outras informações.
/var
Informações variáveis dosistema, como logs, filas de impressão/e-mail, bases de dados, dados de administração e login e arquivos transitórios.

fonte: apostila impressa da conectiva

6 de nov. de 2007

Acesse o Windows pelo Linux

Usuários que tem os sistemas Windows e Linux particionados no mesmo HD e querem ter acesso aos seus arquivos no Windows quando estão utilizando o Linux.

No Shell (modo texto do Linux), que seria o "prompt ms-dos" do Windows, você deve digitar:

# cfdisk

Procure em qual partição o Windows (NTFS) está instalado, se é hda1, hda2, hda3 ou hdaX, onde X é o número da partição.

OBS.: Anote este número, será essencial para realizar o funcionamento do acesso aos arquivos.

Após ter o conhecimento de qual é a partição aonde o Windows (NTFS) está instalado, digite no shell:

# mkdir /mnt/windows

Este comando irá criar uma pasta no diretório /mnt, que é aonde encontram-se os pontos de montagem locais para alguns dispositivos.

Agora digite:

# mount /dev/hdaX /mnt/windows -t auto

Aonde X é o número da partição do Windows. Por exemplo: No computador da minha casa o hda1 é Linux e o hda2 é Windows, o comando que devo utilizar seria:

# mount /dev/hda2 /mnt/windows -t auto

Enfim, agora você pode desfrutar do Linux com seus arquivos que estão no Windows, ou seja, pelo sistema Linux você pode 'entrar' no sistema Windows.

------------------------------------------------------------------------------------------------
Licenciado sob os termos da FDL (Free Documentation License)

Dois drives de CD-ROM no Linux

A forma com que a dica é tratada é simples e clara para um melhor entendimento aos iniciantes. Lembrando que o drive pode ser cd-r, cd-rw, dvd-r, dvd-rw ou combo.

Abra o shell (terminal modo texto). Para conhecer qual arquivo faz referência ao dispositivo de hardware, no caso o cd-rom, digite:

# eject /dev/hdc

e depois digite:

# eject /dev/hdd

Veja qual destes comandos abriu o cd-rom desejado, no meu caso foi o "eject /dev/hdd".

Em seguida, criaremos uma pasta onde será o diretório do drive. Digite o seguinte comando:

# mkdir /mnt/cdrom2

Abra o arquivo fstab, que é onde podemos configurar sistemas de arquivos, os pontos e opções de montagem, este arquivo encontra-se em /etc/fstab. Escolha o Konqueror ou faça pelo shell com seu editor preferido, no caso escolhi o vi que encontra-se em boa parte das distros e é de fácil utilização.

Digite:

# vi /etc/fstab

Para digitar algo no texto do arquivo, pressione a tecla "i", isto para que você possa inserir ou retirar algo do arquivo. Copie a linha que encontra-se a seguir:

/dev/hdd   /mnt/cdrom2   auto   1   0

Agora cole ela no final do arquivo fstab.

Se tudo ocorreu corretamente, pressione a tecla "ESC", isso irá fazer com que você volte ao modo de comando e para salvar e sair digite ':wq' (sem aspas).

Enfim, na pasta /mnt/cdrom2 estará o seu segundo cd-rom pronto para ser utilizado.

______________________________________________________

Licenciado sob os termos da FDL (Free Documentation License)
______________________________________________________

Saiba mais sobre o kernel

Conhecer o kernel é fundamental para tornar-se em um avançado administrador de sistemas Linux. Esta dica separa artigos relacionados ao kernel, que vai desde o conhecimento básico até o conhecimento avançado. Abaixo seguem os artigos em suas devidas url´s:

Guia Foca GNU/Linux
http://focalinux.cipsga.org.br/guia/intermediario/ch-kern.htm

O Maravilhoso Mundo do Linux 2.6
http://br.geocities.com/cesarakg/wwol26-ptBR.html

Compilação do kernel passo-a-passo
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=800

Site oficial (em inglês)
http://www.kernel.org/

Documentação do kernel e os fontes do kernel são encontrados no diretório:
/usr/src/linux/Documentation