Instalação de Programas

- Objetivos
  • Para quem pretende administrar sistemas baseados em Debian e RedHat, deve conhecer o sistema de gerenciamento de pacotes DPKG e RPM.
  • Iremos aprender como esses dois programas e suas diferenças, apesar de serem softwares GNU/Linux.
O dpkg é um programa que é a base do sistema de gerenciamento de pacotes para distribuições GNU/Linux baseadas em Debian. Criado por Ian Jackson em 1993, o dpkg é usado para instalar, remover e fornecer informações sobre os pacotes .deb.

O RPM RedHat Package Manager, é um sistema de gerenciamento de pacotes para sistemas GNU/Linux baseados em RedHat. Ele instala, atualiza, desistala e verifica softwares.


Prática dirigida

1 - Veja a mensagem de ajuda do comando dpkg:

# dpkg --help

2 - Veja as informações do pacote do sudo:

# dpkg -l net-tools

3 - Verifique quais programas estão instalados no sistema:

# dpkg -l |more

7 - Verifique o status de um pacote instalado:

# dpkg -s net-tools

8 - Determine a qual pacote o comando ls pertence:

# dpkg -S /bin/ls

9 - Instale o programa libgpmg1: (tem no cd de instalação do debian)

# cd dpkg -i libgpmg.deb

10 - Remover programas

# dpkg -r

11 - Verificar se o programa foi removido.

# dpkg -l

12 - Apagar arquivos de configuração:

# dpkg -P
Gerenciando pacotes com o aptitude:

1 - Para entrar na interface TUI do aptitude:

# aptitude

2 - Para instalar pacotes com o aptitude temos que configurar o /etc/apt/sources.list:

3 - Atualiza a base de dados do aptitude:

# aptitude update

Gerenciamento de pacotes em formato RPM

1- Verifica quais pacotes estão instalados no sistema:

# rpm -qa

2 - Verifica se o pacote net-tools está instalado:

# rpm -q net-tools

3 - Verificar o que será instalado com o pacote net-tools

# rpm -qp net-tools.rpm

4 - Verificar as informações do pacote, não instalado, net-tools;

# rpm -qpi net-tools.rpm

5 - Verifique quais arquivos foram instalados através do pacote adduser:

# rpm -ql adduser

6 - Verifique quais pacotes serão instalados com o pacote net-tools;

# rpm -qlp net-tools.rpm

7 - Verifique se a instalação irá ocorrer corretamente:

# rpm -ih --teste --percent net-tools.rpm

Exercicios teóricos

1 - Qual é a diferença entre dpkg e aptitude:?

2 - Como verifico quais pacotes estão instalads com dpkg e rpm?

3 - O que realiza o comando rpm -Va?

4 - Como instalo um programa sem suas dependencias utilizando o RPM?

5 - Qual a diferença entre apt-get e aptitude?

Dica LPI: Não se engane !! NA LPI é cobrado DPKG e RPM. peso 4.

Read More

Instalação de Programas

- Objetivos
  • Para quem pretende administrar sistemas baseados em Debian e RedHat, deve conhecer o sistema de gerenciamento de pacotes DPKG e RPM.
  • Iremos aprender como esses dois programas e suas diferenças, apesar de serem softwares GNU/Linux.
O dpkg é um programa que é a base do sistema de gerenciamento de pacotes para distribuições GNU/Linux baseadas em Debian. Criado por Ian Jackson em 1993, o dpkg é usado para instalar, remover e fornecer informações sobre os pacotes .deb.

O RPM RedHat Package Manager, é um sistema de gerenciamento de pacotes para sistemas GNU/Linux baseados em RedHat. Ele instala, atualiza, desistala e verifica softwares.


Prática dirigida

1 - Veja a mensagem de ajuda do comando dpkg:

# dpkg --help

2 - Veja as informações do pacote do sudo:

# dpkg -l net-tools

3 - Verifique quais programas estão instalados no sistema:

# dpkg -l |more

7 - Verifique o status de um pacote instalado:

# dpkg -s net-tools

8 - Determine a qual pacote o comando ls pertence:

# dpkg -S /bin/ls

9 - Instale o programa libgpmg1: (tem no cd de instalação do debian)

# cd dpkg -i libgpmg.deb

10 - Remover programas

# dpkg -r

11 - Verificar se o programa foi removido.

# dpkg -l

12 - Apagar arquivos de configuração:

# dpkg -P
Gerenciando pacotes com o aptitude:

1 - Para entrar na interface TUI do aptitude:

# aptitude

2 - Para instalar pacotes com o aptitude temos que configurar o /etc/apt/sources.list:

3 - Atualiza a base de dados do aptitude:

# aptitude update

Gerenciamento de pacotes em formato RPM

1- Verifica quais pacotes estão instalados no sistema:

# rpm -qa

2 - Verifica se o pacote net-tools está instalado:

# rpm -q net-tools

3 - Verificar o que será instalado com o pacote net-tools

# rpm -qp net-tools.rpm

4 - Verificar as informações do pacote, não instalado, net-tools;

# rpm -qpi net-tools.rpm

5 - Verifique quais arquivos foram instalados através do pacote adduser:

# rpm -ql adduser

6 - Verifique quais pacotes serão instalados com o pacote net-tools;

# rpm -qlp net-tools.rpm

7 - Verifique se a instalação irá ocorrer corretamente:

# rpm -ih --teste --percent net-tools.rpm

Exercicios teóricos

1 - Qual é a diferença entre dpkg e aptitude:?

2 - Como verifico quais pacotes estão instalads com dpkg e rpm?

3 - O que realiza o comando rpm -Va?

4 - Como instalo um programa sem suas dependencias utilizando o RPM?

5 - Qual a diferença entre apt-get e aptitude?

Dica LPI: Não se engane !! NA LPI é cobrado DPKG e RPM. peso 4.

Read More

Shell script I

- Objetivo
  • Entender a estrutura do script;
  • Automatizar tarefas;
  • Conhecer algumas variáveis importantes;
Tarefas administrativas são, muitas vezes, longas e repetitivas. Podemos automatizar esses procedimentos através de scripts. Na verdade, os scripts podems nos auxiliar muito, numa vasta gama de atividades.



O que é um script?

Um script é uma sequencia de instruções que são executadas toda vez que o mesmo é chamado. Mas, qual a diferença entre um script e um programa, já que ambos são sequencias de instruções? Um scrip, é um programa não compilado. O processador da máquina só é capaz de executar programas binários, isto é , compilados espeicificamente para ele. Dessa forma, é necessário um programa que interprete esse script, em tem de execução, para que o mesmo possa ser executado. No nosso caso, esse programa será um shell, já que estamos falando de shell scripts.
Estudando um exemplo

# !/bin/bash

# meu primeiro shell script

cd ~

clear

ls -lah
date

cd -


Este é um script bem simples. As linhas que começam pelo simbolo # são comentários, ou seja tudo que aparece depois do # é desprezado.

Mas a primeira linha, que parece um comentário, possui uma característica um tanto estranha. Na verdade, a primeira linha de um script, quando contem em seu inicio a seguencia #! indica qual programa irá interpretar aquele script. No nosso exemplo será o programa /bin/bash, um shell. Mas o script, propriamente dito, executa 4 comandos simples: Acessar o diretório do usuário corrente (cd ~); limpar tela (clear); lista o conteudo (ls -lha), imprimi a data (date) e volta ao diretorio original (cd - ).

Supondo que nosso script denomina-se s1, para podermos executa-lo, devemos executar o comando:

# chmod u+x s1

e em seguida o script:

# ./s1

Lendo parâmetros da linha de comandos.

Em algumas situações, pode ser necessário fornecer parâmetros para um script. Por exemplo, se ao invês de listar o contéudo do diretório pessoal do usuário, quiséssemos que o script listasse o contéudo de um diretório qualquer. Supondo que esse novo script chama-se s2, uma possível forma de utilização do script seria:

# ./s2 /etc


Para passar parâmetros para esse script, precisamos conhecer a função de algumas variáveis: $1,$2. Quando passamos algum parâmetro para o nosso script, esse parâmetro fica armazenado em uma variável especifica. Por exemplo:

# ./script parametro1 parametro2 parametro3

Para conseguirmos resgatar o valor desses parametros, precisamos chamar as variaveis 1,2 e 3 por exemplo:

#!/bin/bash

#
# esse script pega o valor dos parametros e imprimi na tela.
echo $1
echo $2
echo $3

# ./script3 42 the answer
Exercício prático

1- Crie um script shell que mostre uma porção de um arquivo, onde os argumentos seriam:
1 - nome do arquivo
2 - Número da primeira linha mostrada
3 - Numero da ultima linha mostrada

exemplo de uso, supondo o nome do script miolo:

# miolo /etc/passwd 7 18

Como o resultado, as linhas 7 a 18 (inclusive) do arquivo /etc/passwd deve ser mostrada.
Dica1: use os comandos head e tail.
Dica2:Você sabe realizar aritmética de inteiros da shell?
Dica LPI: Para a prova é bom saber a funcionalidade de algumas variáveis!!
Read More

Agendamento de tarefas

- Objetivo
  • Entender como funciona o agendamento no sistema;
  • Aprender o funcionamento do cron;
  • Aprender o funcionamento do at;



A crontab é utilizada para agendar comandos para serem executados periodicamente, ao contrário do comando at, que executa comandos pontualmente. Há dois tipos de crontab a de usuário e a do sistema. Ambas são arquivos que contêm tabelas com informação de quando o comando especificado deve ser executado, sendo que cada linha corresponde a um único agendamento.
A crontab é gerenciada pelo daemon crond, que a cada um minuto verifica se já algum agendamento que deve ser executado e executa-o. E fica armazenada em arquivos com o nome do usuário dono da tabela no diretório /var/spool/crond. Já a crontab do sistema é encontrada no /etc/crontab e já possui agendamentos para realizar as tarefas que se encontram nos diretórios /etc/cron.[hourly|daily|weekly|monthly]. Sendo que o programa chamado run-parts é quem executa os referidos agendamentos.
O formato das crontabs dos usuários e do sistema são quase iguais, além disso cada campo possui um conjunto de valores válidos, sendo eles:

  • minuto varia de 0-59;
  • hora varia de 0-23;
  • dia varia de 1-31;
  • mes varia de 1-12;
  • diaDaSemana varia de 0-7,sendo 0 e 7 são o domingo;
  • usuário um usuário válido no sistema;
  • comando o path completo para o comando;
Considerando o formato já listado, podemos realizar agendamentos utilizando alguns operadores que facilitam, como:

  • vígula ',' especifica uma lista de valores, por exemplo: "1,3,4,7,8";
  • - especifica um intervalo de valores, por exemplo: 1-15 (de 1 a 15);
  • * especifica todos os valores possíveis;
  • / espefica "pulos" de valores, por exemplo: se no campo hora utilizarmos "*/3" o comando será executado as "0,3,9,12,15,18,21";
Conhecendo a sintaxe básica das crontabs passemos aos agendamentos.

Prática dirigida

1- Verifique se a data e a hora do sistema estão corretas:

# date

Após essa verificação podemos começar a realizar agendamentos.

2 - Agenda para 10 minutos no futuro a listagem do diretório /etc redirecionando para um arquivo, e depois outro arquivo contendo a data e a hora em que foi executada:

#at HH:mm MM/DD/YYYY
at > ls --color /etc > /root/etc_lists.txt
at > echo $(date +"%H:%m %M/%d/%Y" )>> /root/gera.txt
at > (ctrl+d)

3 - Agenda esta tarefa, confirme o agendamento listando todos os agendamentos pendentes:

# atq

4 - Vamos explorar o diretório onde ficam os agendamentos?

# cd /var/spool/cron/atjobs

# ls -la

5 - Mostre o conteúdo dos arquivos contidos nesse diretório:

# cat (agendamento)

repare que no agendamento, temos nossa variáveis, e o comando.

6 - Vamos realizar outro agendamento, para executar em 15 minutos, para que possamos aprender como apagá-los:

# at HH:mm MM/DD/YYYY
at > echo "Teste" > /tmp/at.out
at > ^d

7 - Liste os agendamentos correntes e verifique que um novo arquivo foi criado no diretório de spool do at.

8 - Remova o último agendamento:

# atrm

9 - Liste os agendamentos ativos e liste o contéudo do diretório de spool do at e veja que o job foi removido, utilize seus conhecimentos.

Agendando tarefas com o cron

1 - Crie um script para fazer o backup do /etc:

# vim /root/backup.sh

#!/bin/bash

#backup do /etc

tar czf /backup/$(date +%Y%m%d-%H%M) -etc.tar.gz /etc


obs: não esqueça das permissões do script:

# chmod +x backup.sh

2 - Entre na crontab do usuário para editá-la:

# crontab -e


3 - Coloque na crontab do usuário um agendamento para fazer o backup do diretório /etc utilizando o scrip criado a cada 2 minutos.

# MM HH DD mm DS CMD

*/2 * * * /root/backup.sh

4- Visualize os agendamentos feitos pelo o usuário.

# crontab -l

5 - Onde ficam armazenas os agendamentos feitos pelos usuário com o contrab -e?

# cd /var/spool/cron/crontabs

# ls

obs: Atenção! Não apague ou edite o seu agendamento dentro desse diretório, use os comandos para fazer isso.

6 - Após verificar que os agendamentos foram efetuados corretamente, apague todos os agendamentos do usuário.

# crontab -r


obs: Para apagar somente um agendamento do usuário, use o crontab -e e retire a linha desejada. Agora que aprendemos a utilizar a crontab do usuário podemos usar a crontab do sistema que opera praticamente da mesma forma, apenas tem um campo a mais, o usuário que executará o script.

7 - Faça o mesmo agendamento para execução do scrip backup.sh, mas agora na crontab do sistema:

# MM HH DD mm DS USER CMD

*/2 * * * root /root/backup.sh

obs: repare que dentro do arquivo /etc/crontab existem quatro agendamentos já definidos: cron.hourly,cron.daily,cron.weekly e cron.monthly.

8 - Para fazer com que o scrip backup.sh seja executado diariamento:

# cp /root/backup.sh /etc/cron.daily/backups

9 - Para fazer com que o scrip backup.sh seja executado semanalmente.

# cp /root/backup.sh /etc/cron.weekly/backups

10 - Depois de adicionar o script dentro dos diretórios será necessário reiniciar o daemon do cron.

# /etc/init.d/cron stop

# /etc/init.d/cron start

Exercicios teóricos

1- Qual a diferença entre os agendadores de tarefas at e cron?

2 - Quantos campos há na crontab do sistema? E na crontab do usuário?

3 - Qual é a sintaxe correta para agendar uma tarefa que seja executada nos dias 1,7,10 e dos dias 15 ao 20 às 19hs utilizando a crontab do usuário, sendo o nome do comando "foo"?

Dicas LPI: A única diferença entre as duas crontabs é que na do sistema há um campo para especificar qual é o usuário que irá executar o comando agendado.
Read More

coffee break - Propaganda Linux

Read More

Compactadores, empacotadores e procedimentos de backup

- Objetivos
  • Diferenciar compactação de empacotamento;
  • Compreender o comando tar;
  • Comparar as qualidades do gzip e do bzip2;
A compreensão e empacotamento de arquivos e diretórios é muito importante em qualquer sistema computacional. Ambos os procedimentos são necessários desde o ponto de vista de distribuição de softwares, quanto de economia de banda e de espaço de armazenamento, até backup do sistema. Veremos neste artigo o principal programa de empacotamento GNU/Linux e os dois principais compactadores.



Empacotador TAR

A forma mais conhecida de realizar compresão e empacotamento em ambientes Windows é utilizando o programa zip. Um programa que "zipa" um arquivo, ou diversos arquivos, na realidade está realizando dois procedimentos distintos: empacotar e comprimir.

A utilização da ferramentar tar é bastante simples e pode ser resumida da seguinte forma:

$ tar f []


Opções:
  • x - extrair
  • c - criar
  • v - ver
  • f - arquivo
  • z - gzip
  • j - bzip2
  • t - teste
  • r - juntar
Prática dirigida

1- copie todo o contéudo do diretório /etc para /backup e vá para o /backup:

# cp -rL /etc/ backup

# cd /backup

2 - verifique que não é possivel compactar um diretório sem empacota-las antes. Tente o com gzip e com o bzip2 :

# gzip etc

# bzip2 etc

Para determinarmos qual o melhor compactador vamos analisar dois tipos de arquivos, texto puro e binário. Para isso vamos criá-los.

3 - Vamos criar dois arquivos de texto puro. Abra o arquivo texto1 no editor vim e insira a linha contento os números de 0 a 9:

# vim texto1

0123456789

4 - Ainda dentro do vim, copie essa linha e cole 250.000 vezes:

:1y
25000p

5 - Saia do arquivo salvando as alterações:

:x

6 - Crie uma cópia deste arquivo chamado-a de texto2:

# cp texto1 texto2

7 - Vamos criar um par de arquivos binários para nossos testes. Utilizaremos como base, o programa aptitude:

# cp /usr/bin/aptitude bin1

8 - Vamos duplicar esse arquivo:

# cp bin1 bin2

9 - Verifique que criamos quatro arquivos com tamanho parecido, aproximadamente 2.4mb, sendo dois binários e dois texto puro:

# ls -lh

10 - Determine o intervalo de tempo que leva para comprimir o arquivo texto1 com gzip:

# time gzip texto1

11 - Determine o tamanho final do arquivo texto1 após ser comprimido com gzip:

# ls -lh texto1.gz

12 - Determine o valor de tempo que leva para descomprimir o arquivo texto1.gz:

# time gunzip texto1.gz

Trabalhando com TAR

1- Dentro do /backup vamos criar um arquivo "tar" que cujo contéudo será o diretório /backup/etc empacotado. Verifique que o arquivo foi criado.

#tar cf etc.tar etc

# ls -lh

2 - liste o contéudo do arquivo etc.tar:

# tar tf etc.tar

3 - comando simples para extrair um arquivo.

tar xf etc.tar

4 - comando de extrair arquivos gzip.

# tar czf etc.tar.gz etc

5 - comando de extrar arquivos bzip.

# tar xjf etc.tar.bz2


Exercicios teóricos

1 - Qual a diferença entre empacotar e comprimir?

2 - Quais comando GNU/Linux você conhece que realizam compressão?

3 - Quais comandos GNU/Linux você conhece que servem para empacotar arquivos e diretórios?


Read More

Comandos úteis de linha de comando

- Objetivo
  • Conhecer alguns comandos importantes para o dia-a-dia.
No mundo GNU/Linux, a maioria das operações são realizadas por meio de comandos escritos. Em geral, permitem um maior controle e flexibilidade de operações, além de poderem ser inclúidos em scripts. Neste artigo iremos aprender sobre alguns comandos básicos.



Trabalhando com entrada e saída de dados

Esta parte é extramamente importante, pois se trabalha bastante com isso. Por padrão, a entrada do shell é o teclado, a saída, a tela, e os erros são exibidos na tela também.

Os termos geralmente usados são:

  • entrada de dados, representada por stdin;
  • saída de dados, representada por stdout;
  • saída de erros, representada por stderr;
Mas isso pode ser mudado com o uso de caracteres de redirecionamento, veja abaixo: Para mudar saída padrão:

> - Redireciona a saída em um arquivo apagando o contéudo anterior (se existir);

exemplo:

# ls / > tst
# cat tst
# ls /var > tst
#cat tst

>> - Redireciona a saída no final de um arquivo, preservando-o;

exemplo:

#ls / >> tst

# cat tst
# ls /var >> tst
#cat tst

comandos auxiliares:

| - (pipe, pronuncia-se paipe): serve para canalizar saída de dado para outro comando;


Mostrando o contéudo e/ou concatenando

# cat teste.dat

O comando cat pode ser utilizado para mostrar o contéudo de um arquivo.


# tac teste.dat

De forma análoga, o comando tac também serve para mostrar o contéudo e concatenar arquivos.

Controlar o fluxo: more e less

O comando more permite a leitura continua de um arquivo.

# more /var/log/syslog

O comando less é mais sofisticado e permite ir e voltar na leitura de um arquivo.

# less /var/log/syslog
Porções específicas: head e tail

Para ler as 10 primeiras linhas de um arquivo, podemos usar:

# head /var/log/syslog

Para ler as 10 últimas linhas de um arquivo, podemos usar:

# tail /var/log/syslog

e para vermos as linhas atualizadas sendo criadar utilizamos o parâmetro.

# tail -f /var/log/syslog

Contagem: wc

Grande parte dos arquivos de configuração e de dados usa uma linha por registro. A contagem destas linhas pode nos fornecer informações muito interessante.

Por exemplo, a saída abaixo:

# wc /etc/passwd

Indica que o arquivo contem 32 linhas, 49 blocos (palavras) e 1528 caracteres. Caso seja necessário apenas o número de linhas, o comando wc pode ser usado com o parêmetro -l, como abaixo:

# wc -l /etc/passwd
Classificação: sort
Para diversas ações como eliminação de itens repetidos e rápida visualização de nomes é interessante que possamos classificar um arquivo texto. Na linha de comando, os arquivos textos podem ser classificados usando o comando sort.

A saída do comando abaixo não segue a ordem alfabética:

# cat /etc/passwd

Podemos mostrar a saída classificada em ordem alfabética, como abaixo:

# sort /etc/passwd

O comando sort pode ser modificado usando os parâmetros:

  • -f não considera se as letras estão na caixa alta ou baixa;
  • -n classificação númerica;
  • -r classifica na ordem invertida;
Mostrar algo: echo

O comando echo é usado para ecoar algo na tela ou direcionado para um arquivo.

#echo $HOME

Para saber qual o idioma definido no console:

#echo $LANG

Usando o caractere de redirecionamento >, podemos enviar a saída do comando echo para outro destino:

# echo $LANG > /tmp/teste

#cat /tmp/teste

No exemplo acima, o arquivo teste contém o valor da variável de ambiente $LANG.
Filtragem de arquivos: grep

Uma necessidade constante dos administradores é encontrar informações dentro dos arquivos.

Procure no google.com, informações sobre o grep ou então man grep.

# ifconfig |grep end.:
Filtrar colunas: cut

O comando cut pode ser muito utíl para conseguir listagens a partir de arquivos com separadores de colunas definidos.

Por exemplo, para conseguir a primeira coluna do arquivo /etc/passwd, cujo delimitador de colunas é o sinal:, podemos usar o comando:

# cut -f1 -d: /etc/passwd

Determinando o tipo de arquivo: file

No linux, extensões de arquivos têm apenas a função de nos auxiliar a nomear arquivos, a identifica-los e organiza-los facilmente. Não é a extensão que determina o tipo do arquivo, mas sim o seu contéudo.

O comando file determina o tipo do arquivo analisando o seu próprio contéudo. O exemplo abaixo mostra o uso deste comando:

# file arquivo

Administrativos
-Verificar espaço em disco: df

$ df -h
-Verificar espaço de uma pasta ou arquivo: du

$ du - h
- Mostrar o uso de memória RAM:free

O comando free mostra o consumo da memoria RAM e os detalhes sobre o uso de memória virtual (swap).

# free

- Mostrar e/ou ajustar a data do sistema:date

Esse comando mostra a data e a hora do sistema, e também para ajustá-las.

# date

Caso for alterar a hora do sistema precisa alterar conforme o padrão.

# date mmddHHMMYYYY
- Mostrar por quanto tempo o computador está ligado: uptime

# uptime
Mostrar informações sobre o sistema: uname

O comando uname pode ser usado para mostrar informações sobre a versão do kernel em uso e a arquitetura:

# uname -a

Diferença entre arquivos: diff
O programa diff nos permite verificar a diferença entre arquivos e diretórios.

# diff arquivo1 arquivo2

# diff -r dir1 dir2
Tempo de execução de um programa: Time


#time programa

# time updatedb

localização do sistema: find
O comando find procura por arquivo /diretórios no disco.

find /etc -name *.conf

Busque mais informações no google.com ou então man find.
Localização usando base de dados: locate

O comando locate é um comando rápido de busca de arquivos, porém não usa busca recursiva na sua árvore de diretórios.

# updatedb

#locate howto

Exercícios teóricos

1 - qual é a principal diferença entre os comandos find e locate?

2 - Qual é a função do comando tac?

3 - Qual é a função do comando echo?

4 - Qual é a diferença entre o comando du e o comando df ?

5 - Qual é a utilidade do comando time?

Dicas LPI:
O comando grep não é somente importante para a LPI, mas pode te ajudar muito todos os dias! =D

O comando head e tail podem trazer algumas surpresas!!


Read More