Exercício Prático LPIC 04

Publicado por Wagner Souza em 26/01/2015

[ Hits: 3.923 ]

Blog: https://medium.com/@souzaw

 


Exercício Prático LPIC 04



LPIC 1:
  • Tópico 103 - Comandos GNU/Linux e Unix
  • Peso total: 26
  • Tópico 105 - Shells, scripts e administração de dados
  • Objetivo 105.2 - Editar e escrever scripts
  • Peso: 4

LPIC 2:
  • Tópico 200: Planejamento de Capacidade
  • Peso: 8

Um sysadmin está verificando uma certa lentidão em um dos seus servidores. Ele precisa criar um script que informe o uso da memória RAM, CPU e disco rígido, três vezes seguidas no intervalo de um minuto em cada execução.

Ao final, o resultado deve ser gravado em um arquivo com extensão ".log" no diretório /var/log/ para análise.

Solução: alguns comandos que podem ser utilizados com esta finalidade, são:
  • top;
  • sar;
  • vmstat;
  • iostat;
  • free, entre outros.

Criei um script para ajudar a resolver esse problema. Porém, para este exercício, foquei mais nos comandos iostat e free.

Crie um arquivo com o nome "monitor.sh":

#!/bin/bash

# Agrupei todos os comandos dentro uma função para facilitar e organizar a execução dos comandos.

funcao(){

# Declaração das variáveis
#
#Dentro do arquivo /proc/cpuinfo há uma vasta informação e assim utilizei 
#o comando grep para filtrar apenas as informações referentes ao modelo 
#do processador independentemente da escrita estava em maiúscula ou 
#minúscula ( -i ). Isso utilizando o canalizador pipe para ir jogando a 
#saída de um comando para outro. Como o cut, cortei apenas as informações 
#desejadas. O comando uniq vai servir no caso de processadores com mais 
#de um núcleo. Caso o mesmo não fosse utilizado, iriam aparecer 
#informações repetidas a respeito do nome do processador.

#Também esporei várias formas de utilizar os comandos dentro de uma 
#variável como na variável FREE eu uso o comando which que serve para 
#indicar o local exato de um comando ou programa.

CPU=$(cat /proc/cpuinfo | grep -i "model name" | cut -c13-55 | uniq)
RAM=$(free -h | grep -i mem | cut -c14-21)
DISTRO=$(lsb_release -d | cut -c14-33)
KERNEL=$(uname -r)
ARQ=$(uname -i)
FREE=$(which free)

##### FIM #####

echo "__________________________"
echo
echo " MONITORAMENTO DO SISTEMA "
echo "__________________________"
echo

echo "Inicio: " $(date +%T-%d/%m/%Y)

echo
echo ">>> INFORMACOES DO SISTEMA <<<"
echo

echo "Sistema Operacional: " $DISTRO
echo "Kernel em Uso:  " $KERNEL
echo "Arquitetura:  " $ARQ
echo "Hostname: " $(hostname)
echo "Processador:  " $CPU
echo "Total de Memoria RAM: " $RAM

echo
echo ">>> STATUS DA CPU <<<"
echo

#O comando iostat gera um relatório com estatísticas de uso da CPU e 
#de entrada/saída de dispositivos e partições. Para mais informações 
#detalhadas, execute o comando man iostat

#Aqui utilizei o comando sed para apagar duas linhas que eu não 
#queria que fosse mostrada na saída do comando e que não ficariam 
#interessantes no relatório.

#Caso no seu sistema não tenha o iostat, ele faz parte do pacote 
#sysstat e pode ser baixado via:
#
# apt-get install sysstat 
# ou 
# yum install systat
#
#Nesta parte eu não quis utilizar uma variável para chamar o programa. 
#Ao invés disse, botei a localização exata do mesmo através do comando 
#which iostat. Sempre é interessante por o caminho completo nos scripts 
#para evitar possíveis erros apesar de não ser obrigatório, pois você 
#pode utilizar apena o nome do comando ou programa.

#Chamo a atenção para os números 60 e 3. Será mostrado o status da CPU 
#nos últimos 60 segundos ( 1 minuto ) e o comando será executado três 
#vezes nesse intervalo. Com isso, o SysAdmin poderá verificar como está 
#a carga do sistema em um intervalo de 9 minutos produzindo uma análise 
#mais confiável. Este tempo pode ser aumentado ou diminuído de acordo 
#com a sua necessidade.

/usr/bin/iostat -c 60 3 | sed '1,2d'

echo
echo ">>> STATUS DA MEMORIA RAM <<< "
echo

#A contagem das informações do comando free é diferente do iostat. Aqui 
#é preciso por os atributos -c, de contagem, e -s de segundos.

$FREE -h -c 3 -s 60

echo
echo ">>> STATUS DO HD <<<"
echo

echo "Utilizacao/Carga do Disco Rigido: "
echo

#Este comando vai exibi a capacidade do disco rígido bem como o percentual 
#de utilização. A saída será em um formato mais legível e informando também 
#os tipos de cada partição

/bin/df -hT

echo

/usr/bin/iostat -d 60 3 | sed '1,2d'

}

#O comando tee vai exibir as informações geradas pela saída dos comandos 
#no monitor e escrevendo-as em um #arquivo de registro de log para 
#consulta posterior

funcao | tee /var/log/sysrelatorio.log

Script sem comentários:

#!/bin/bash

funcao(){

# Declaracao das variaveis

CPU=$(cat /proc/cpuinfo | grep -i "model name" | cut -c13-55 | uniq)
RAM=$(free -h | grep -i mem | cut -c14-21)
DISTRO=$(lsb_release -d | cut -c14-33)
KERNEL=$(uname -r)
ARQ=$(uname -i)
FREE=$(which free)

##### FIM #####

echo "__________________________"
echo
echo " MONITORAMENTO DO SISTEMA "
echo "__________________________"
echo

echo "Inicio: " $(date +%T-%d/%m/%Y)

echo
echo ">>> INFORMACOES DO SISTEMA <<<"
echo

echo "Sistema Operacional: " $DISTRO
echo "Kernel em Uso:  " $KERNEL
echo "Arquitetura:  " $ARQ
echo "Hostname: " $(hostname)
echo "Processador:  " $CPU
echo "Total de Memoria RAM: " $RAM

echo
echo ">>> STATUS DA CPU <<<"
echo

/usr/bin/iostat -c 60 3 | sed '1,2d'

echo
echo ">>> STATUS DA MEMORIA RAM <<< "
echo

$FREE -h -c 3 -s 60

echo
echo ">>> STATUS DO HD <<<"
echo

echo "Utilizacao/Carga do Disco Rigido: "
echo

/bin/df -hT

echo

/usr/bin/iostat -d 60 3 | sed '1,2d'

}

funcao | tee /var/log/sysrelatorio.log

Bom pessoal, procurei utilizar uma boa quantidade de comandos para que vocês possam praticar bastante e assim assimilar os assuntos abordados nos exames da LPI.

Lembrando que a prova é teórica, mas é preciso ter prática e familiaridade na execução dos comandos. Não deixem de praticar e estudar.

Até o próximo exercício!

Outras dicas deste autor

Exercício Prático LPIC 07

Configurando script de inicialização no openSUSE

Exercício Prático LPIC 05

Trabalhando com datas no LibreOffice

Trabalhando com referências de células no LibreOffice

Leitura recomendada

Debian - Corrigindo erro da Tela de Login pós-instalação do Java

Google Chrome Stable no CentOS 6.x

Atheros (Ethernet) device 1091 (rev 10) no Slackware 14 (64 bits)

Leitor Biométrico no Thinkpad X230 com openSUSE 13.2 - Configuração

Configurando dicionionário/lista de palavras nas distribuições derivadas do Debian

  

Comentários
[1] Comentário enviado por fabio em 26/01/2015 - 14:27h

Muito bom! Obrigado por compartilhar.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts