Status do sistema
Publicado por Pedro Fernandes (última atualização em 24/07/2019)
[ Hits: 4.212 ]
Homepage: https://github.com/PedroF37
Download 1561441124.status (versão 2)
Script para mostrar o status do sistema:
Espaço em disco; df
Espaço ocupado pelos diretórios e ficheiros; du
Memória; free
Temperatura da cpu; sensors
Tempo e carga do sistema; uptime
Conexão ou banda atual de download e upload; speedtest-cli ou simples ping
Pode tanto ser usado como usuário normal, como pelo root.
Pode imprimir a informação na tela ou armazenar em arquivo de texto para análise posterior.
Versão 2 - Enviado por Pedro Fernandes em 25/06/2019
Changelog: Script status versão 1.1 (final)
Changelog:
Uma pequena e única mudança:
Função "conect"; linhas 116 e 117 (no meu editor)
Se o ping dá erro, não segue mais com o resto da função, pois se dá erro não vale
a pena testar velocidade de download/upload.
Sendo assim adicionei um "sleep 3" e logo de seguida um "return", para nem tentar
usar o speedtest, e ao invés disso saltar para a próxima função.
#!/bin/bash ###################################################################### # # status : script para mostrar o status do sistema: # # Espaço em disco; df # Espaço ocupado pelos diretorios e ficheiros; du # Memoria; free # Temperatura da cpu; sensors # Tempo e carga do sistema; uptime # Conexão ou banda atual de download e upload; speedtest-cli ou simples ping # # Pode tanto ser usado como usuário normal, como pelo root # # Pedro Fernandes # ####################################################################### ####################################################################### # # Constantes PROGRAMA="$(basename "$0")" DATA="$(date "+%d-%m-%Y %H:%M" )" TITLE="Relatório do sistema para $HOSTNAME" GERADO="Relatório gerado: $DATA, por $USER" # ####################################################################### ####################################################################### # # Funções # ajuda usg () { echo -e "\n$PROGRAMA: uso: $PROGRAMA [ -f ] [ -h ]. Script que analisa o status do sistema: Espaço ocupado em disco; Espaço ocupado por arquivos no HOME; Memória livre, ocupada em cache/buffer; Temperatura do sistema; Tempo de atividade e carga média do sistema; Conexão com o ping, ou banda de download e upload (tem que ter programa speedtest-cli). Se o script for chamado com o parâmetro [ -f ], o script enviará a saída para um arquivo de texto no seu HOME chamado "/home/usuario/status.txt", ou, "/root/status_root.txt", caso o script seja rodado como usuário root. Se o script for chamado com o parâmetro [ -h ], então este mesmo texto será mostrado. Caso o script seja chamado sem parâmetro algum, então a saída simplesmente será exibida na tela." exit } # Tempo e carga tempo_carga () { echo -e "\nTempo e carga média do sistema:" cat <<- _EOF_ $(uptime) _EOF_ return } # Espaço em disco disk_usage () { echo -e "\nEspaço ocupado em disco:" cat <<- _EOF_ $(df -h) _EOF_ return } # Espaço do home home_space () { local format="%8s%10s%10s\n" local i dir_list total_files total_dirs total_size user_name if [[ "$(id -u)" -eq 0 ]]; then dir_list=/home/* user_name="Todos os usuários" else dir_list="$HOME" user_name="$USER" fi echo -e "\nUtilização de espaço no HOME ($user_name):" for i in $dir_list; do total_files="$(find "$i" -type f 2>/dev/null | wc -l)" total_dirs="$(find "$i" -type d 2>/dev/null | wc -l)" total_size="$(du -sh "$i" 2>/dev/null | cut -f 1)" echo -e "\n$i" printf "$format" "Diretórios" "Arquivos" "Tamanho" printf "$format" "--------------" "------------" "-------------" printf "$format" "$total_dirs" "$total_files" "$total_size" done return } #conexão conect () { echo -e "\nConexão......." if ! ping -c2 www.google.com &>/dev/null; then echo -e "\nParece estar desconectado[a]..... Não iremos proseguir com o teste." else echo -e "\nConexão encontrada........." fi if [[ -n "$(which speedtest-cli)" ]]; then echo -e "\nVelocidade de download e upload, (speedtest-cli)......" speedtest-cli else echo -e "\nQualidade da connexão usando o ping......." ping -c5 www.google.com fi return } # Memória livre e ocupada mem () { echo -e "\nMemória total, ocupada e livre:" cat <<- _EOF_ $(free -h) _EOF_ sleep 3 return } # Temperatura temp () { echo -e "\nTemperatura atual:" cat <<- _EOF_ $(sensors) _EOF_ return } # Chamando as funções prog () { echo -e "\n$TITLE" echo -e "\n$GERADO" tempo_carga disk_usage home_space conect mem temp } # ###################################################################### ###################################################################### # # Programa if [[ -z "$1" ]]; then prog echo -e "\nFinalizamos por aqui......" sleep 3 exit fi # Se tem parâmetro qual foi? if [[ -n "$1" ]]; then case "$1" in -f) arquivo=1 ;; -h) usg exit ;; *) usg exit 1 ;; esac fi # Tratando do parâmetro "-f (arquivo)" if [[ -n "$arquivo" ]]; then if [[ "$(id -u)" -eq 0 ]]; then echo -e "\nAguarde enquanto criamos o arquivo com os dados...... Pode demorar um pouco......" prog &>/root/status_root.txt echo -e "\nArquivo salvo em /root/status_root.txt." else echo -e "\nAguarde enquanto criamos o arquivo com os dados...... Pode demorar um pouco......" prog &>/home/$USER/status.txt echo -e "\nArquivo salvo em /home/$USER/status.txt." fi sleep 2 echo -e "\nSaíndo agora do programa......" fi # ###################################################################### # exit
copy - copiar para a área de transferência
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Instalação Uefi com o instalador clássico do Mageia [RESOLVIDO] (2)
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)