Usando scripts shell para automatizar tarefas de manutenção do sistema Linux - Parte 4

Usando scripts shell para automatizar tarefas de manutenção do sistema Linux - Parte 4

Há algum tempo, li que uma das características distintivas de um administrador / engenheiro eficaz é preguiça. Parecia um pouco contraditório no começo, mas o autor passou a explicar o porquê:

Série RHCE: automatizar tarefas de manutenção do sistema Linux - Parte 4

Se um sysadmin passa a maior parte do tempo resolvendo problemas e fazendo tarefas repetitivas, você pode suspeitar que ele não está fazendo as coisas certas. Em outras palavras, um administrador / engenheiro eficaz do sistema deve desenvolver um plano para executar tarefas repetitivas com o menor número possível de ações de sua parte e deve prever problemas usando,

Por exemplo, as ferramentas revisadas na Parte 3 - Monitorar relatórios de atividades do sistema usando ferramentas Linux desta série. Assim, embora ele ou ela não pareça estar fazendo muito, é porque a maioria de suas responsabilidades foi atendida com a ajuda de scripts de shell, que é sobre isso que vamos falar neste tutorial.

O que é um script de shell?

Em poucas palavras, um script de shell nada mais é e nada menos que um programa executado passo a passo por um shell, que é outro programa que fornece uma camada de interface entre o kernel Linux e o usuário final.

Por padrão, o shell usado para contas de usuário em RHEL 7 é bash (/BIN/BASH). Se você deseja uma descrição detalhada e alguns antecedentes históricos, você pode consultar este artigo da Wikipedia.

Para saber mais sobre o enorme conjunto de recursos fornecidos por este shell, você pode querer verificar seu página de homem, que é baixado no formato PDF em (Comandos Bash). Fora isso, supõe -se que você esteja familiarizado com os comandos Linux (se não, eu aconselho fortemente você a passar por um guia de novatos para o artigo de Sysadmin em Tecmint.com antes de proceder). Agora vamos começar.

Escrevendo um script para exibir informações do sistema

Para nossa conveniência, vamos criar um diretório para armazenar nossos scripts de shell:

# scripts mkdir # scripts de cd 

E abra um novo arquivo de texto nomeado Informação do sistema.sh com seu editor de texto preferido. Começaremos inserindo alguns comentários no topo e alguns comandos depois:

#!/bin/bash # script de amostra escrito para a parte 4 da série RHCE # Este script retornará o seguinte conjunto de informações do sistema: # -HostName Informações: echo -e "\ e [31; 43m ******* Informações do nome do host ***** \ e [0m "hostnamectl echo" " # -File System Disk Space Uso: echo -e" \ e [31; 43m ******* Uso do espaço do disco do sistema de arquivos ***** \ e [0m "df -h echo" " # -Free e usou memória no sistema: echo -e" \ e [31; 43m ******* Memória livre e usada ***** \ e [0m "eco livre" " # -System UpTime and load: echo -e" \ e [31; 43m ******* Tempo de atividade do sistema e carga ***** \ e [0M "Uptime Echo" " # -Gled -In Usuários: ECHO -E" \ e [31; 43m ***** Usuários atualmente conectados ***** \ e [0m "quem echo" " # -TOP 5 processos no que diz respeito ao uso da memória eco -e" \ e [31; 43m ******* 5 principais processos de consumo de memória ***** \ e [0m "ps -eo%mem,%cpu, comm - -sort = -%mem | head -n 6 echo" "echo -e" \ e [1; 32mdone.\ e [0m " 

Em seguida, dê o script Permissões:

# chmod +x system_info.sh 

e execute:

./Informação do sistema.sh 

Observe que os cabeçalhos de cada seção são mostrados em cores para melhor visualização:

Script de shell de monitoramento do servidor

Essa funcionalidade é fornecida por este comando:

echo -e "\ e [Color1; color2m\ e [0m " 

Onde Color1 e Color2 são as cores de primeiro plano e fundo, respectivamente (mais informações e opções são explicadas nesta entrada do Wiki do Arch Linux) e é a string que você deseja mostrar em cores.

Automatando tarefas

As tarefas que você pode precisar automatizar podem variar de caso para caso. Portanto, não podemos cobrir todos os cenários possíveis em um único artigo, mas apresentaremos três tarefas clássicas que podem ser automatizadas usando scripts de shell:

1) Atualize o banco de dados de arquivos local, 2) Localizar (e excluir alternativamente) arquivos com 777 permissões e 3) Alerta quando o uso do sistema de arquivos supera um limite definido.

Vamos criar um arquivo chamado Auto_tasks.sh Em nosso diretório de scripts com o seguinte conteúdo:

#!/bin/bash # script de amostra para automatizar tarefas: # -Update Banco de dados de arquivos locais: echo -e "\ e [4; 32mAtualizando o banco de dados de arquivos locais\ e [0m "UpdatedB se [$? == 0]; então eco ", o banco de dados de arquivos local foi atualizado corretamente."Casoço eco", o banco de dados de arquivos local não foi atualizado corretamente."Fi Echo" " # -Chind e / ou excluir arquivos com 777 permissões. echo -e "\ e [4; 32mProcurando arquivos com 777 permissões\ e [0m " # Ativar qualquer opção (comente a outra linha), mas não ambos. # Opção 1: Exclua arquivos sem solicitar a confirmação. Assume a versão GNU do encontro. #find -type f -perm 0777 -Delete # Opção 2: Peça confirmação antes de excluir arquivos. Mais portátil entre os sistemas. encontre -Type f -perm 0777 -exec rm -i  +; eco "" # -Art quando o uso do sistema de arquivos ultrapassa um limite definido eco -e "\ e [4; 32MVerificação do uso do sistema de arquivos\ e [0m "limite = 30 enquanto lida linha; faça # Esta variável armazena o caminho do sistema de arquivos como um sistema de arquivos de string = $ (echo $ linha | awk 'print $ 1') # Esta variável armazena a porcentagem de uso (xx% ) Porcentagem = $ (echo $ line | awk 'print $ 5') # Use porcentagem sem o sinal de %. Uso = $ porcentagem%? se [$ USAGE -GT $ LIMPHOLD]; então eco. Usado: $ porcentagem "fi feito < <(df -h --total | grep -vi filesystem) 

Observe que há um espaço entre os dois < Sinais na última linha do script.

Script de shell para encontrar 777 permissões

Usando Cron

Para dar eficiência um passo adiante, você não vai querer sentar na frente do seu computador e executar esses scripts manualmente. Em vez disso, você vai usar Cron Para agendar essas tarefas a serem executadas periodicamente e envia os resultados para uma lista predefinida de destinatários por e -mail ou salvá -los em um arquivo que pode ser visualizado usando um navegador da Web.

O script a seguir (FileSystem_usage.sh) vai executar o conhecido df -h comando, formate a saída em uma tabela html e salve -a no relatório.html arquivo:

#!/bin/bash # script de amostra para demonstrar a criação de um relatório HTML usando script shell # diretório da web web_dir =/var/www/html # Um pouco de CSS e layout da tabela para fazer o relatório parecer um pouco mais agradável "   .titulo font-size: 1em; cor branca; Antecedentes:#0863CE; preenchimento: 0.1em 0.2em; tabela colapso da borda: colapso;  tabela, td, th borda: 1px Solid Black;  "> $ Web_dir/relatório.HTML # View hostName e insira -o na parte superior do host do corpo html = $ (nome do host) eco "Uso do sistema de arquivos para host $ Host
Ultima atualização: $ (data)

">> $ web_dir/relatório.html # leia a saída de df -h linha por linha durante a linha de leitura; fazer eco "">> $ web_dir/relatório.html feito < <(df -h | grep -vi filesystem) echo "
Sistema de arquivo Tamanho Usar %
">> $ web_dir/relatório.HTML ECHO $ ​​LINE | awk 'print $ 1' >> $ web_dir/relatório.html eco "">> $ web_dir/relatório.HTML ECHO $ ​​LINE | awk 'print $ 2' >> $ web_dir/relatório.html eco "">> $ web_dir/relatório.HTML ECHO $ ​​LINE | awk 'print $ 5' >> $ web_dir/relatório.html eco "
">> $ web_dir/relatório.html

Na nossa RHEL 7 servidor (192.168.0.18), isso parece o seguinte:

Relatório de monitoramento do servidor

Você pode adicionar a esse relatório o máximo de informações que quiser. Para executar o script todos os dias em 1:30 da tarde, Adicione a seguinte entrada Crontab:

30 13 * * */root/scripts/filesystem_usage.sh 

Resumo

Você provavelmente pensará em várias outras tarefas que deseja ou precisa automatizar; Como você pode ver, o uso de scripts de shell simplificará muito esse esforço. Sinta -se livre para nos informar se achar útil este artigo e não hesite em adicionar suas próprias idéias ou comentários através do formulário abaixo.