Exercício Prático LPIC 04

Publicado por Wagner Souza em 26/01/2015

[ Hits: 4.113 ]

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

Trabalhando com referências de células no LibreOffice

Exercício Prático LPIC 12

Shell Script nosso de cada - Episódio 2

Servidor Proxy para uso do APT e ZYPPER - Configuração

Guias das Melhores Práticas de Segurança para GNU/Linux

Leitura recomendada

Erro: "mysql_config: not found" Debian 9 [Resolvido]

Como usar o i3 como gerenciador de janelas no KDE plasma

Atualizando o VIOS (AIX)

Configurando o modem HSP56 no SuSE 9.0

Flash 9 + Firefox 3

  

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