AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 753340
Accepted
achhainsan
achhainsan
Asked: 2023-08-06 13:32:41 +0800 CST2023-08-06 13:32:41 +0800 CST 2023-08-06 13:32:41 +0800 CST

Script para enviar um e-mail de alerta quando o espaço em disco estiver acima de 90% envia o disco cheio mesmo quando o disco não está cheio, como resolver esse problema?

  • 772
#!/bin/bash

df -m > myfile
server_ip_address=$(ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | head -n 1 | awk '/inet/ {print $2}' | cut -d'/' -f1)

if awk '$2 > 10000 && $5 > 90' myfile ; then
    echo "Disk Full in $server_ip_address"
else
    echo "Nothing wrong with the server"
fi

Quando executo o script, sempre obtenho o disco cheio como saída? A saída de df -m se parece com isto:

Filesystem              1M-blocks   Used Available Use% Mounted on
/dev/mapper/centos-root    949305 512827    436479  55% /
devtmpfs                     3811      0      3811   0% /dev
tmpfs                        3823      0      3823   0% /dev/abc
tmpfs                        3823     18      3806   1% /run
tmpfs                        3823      0      3823   0% /sys/fs/cgroup
/dev/sda2                    1014    175       840  18% /boot
/dev/sda1                    1022     12      1011   2% /boot/efi
tmpfs                         765      0       765   0% /run/user/2000

A saída de df -m difere de servidor para servidor. Estou comparando se Size>10GB e Use%>90%. Como alguns discos com tamanho <10 GB podem não ser importantes para menos de 90% de uso do disco.

Atualização 1:

GNU bash, versão 4.2.46(2)-release (x86_64-redhat-linux-gnu)

SO é centos 7

Problema com o código atual:

Preciso comparar da segunda linha às colunas da última linha, mas meu código atual está comparando as colunas da primeira linha, por isso suponho que não esteja funcionando. Como resolver o problema?

email
  • 1 1 respostas
  • 71 Views

1 respostas

  • Voted
  1. Best Answer
    roaima
    2023-08-06T16:48:14+08:002023-08-06T16:48:14+08:00

    O problema no meu código atual é que a saída de df -H nem sempre está em GB

    A resposta aqui é não usar -H. Conforme documentado, man dfdestina-se a "saída legível por humanos" e a unidade pode variar intencionalmente.

    Em vez disso, use uma unidade fixa: o KB padrão ou talvez o MB ( -m).

    Você também pode querer ler sobre Nagios (Icinga). Esta é uma ferramenta de monitoramento que inclui scripts para abordar exatamente o tipo de monitoramento que você está abordando.

    Quando executo o script, sempre obtenho o disco cheio como saída

    Isso ocorre porque if awk ...sempre retorna verdadeiro, porque awksempre termina com êxito, a menos que encontre um erro ao tentar executar seu script (arquivo não encontrado, erro de sintaxe etc.)


    Eu estaria inclinado a considerar escrever o roteiro assim

    #!/bin/sh
    myIP=$(
        ip -j route |
        jq -r '.[] | select(.dst == "default") | .gateway'
    )
    
    df=$(
        df -lm -x tmpfs |
        awk '
            NR==1 { header=$0 }
            $5+0 > 90 { if (length(header)) { print header; header="" }; print }
        '
    )
    
    if [ -n "$df" ]
    then
        echo "Problems with server $myIP"
        echo
        echo "$df"
    else
        echo "Disk space seems ok on $myIP"
    fi
    
    • 0

relate perguntas

  • Mutt abook consulta vazia

  • Lidando com portas SMTP não padrão com sendmail -t

  • Como posso adicionar um anexo com o Sendmail (opções limitadas)?

  • Uma "exclusão segura" pode ser implementada para um servidor IMAP no modo Maildir?

  • Recebendo e-mail em um novo Debian fresco

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve