Nowe posty

Autor Wątek: Skrypt sprawdzający miejsce na dysku  (Przeczytany 1401 razy)

graby0

  • Gość
Skrypt sprawdzający miejsce na dysku
« dnia: 2019-06-13, 12:42:18 »
Witam,
napisałem taki skrypt za pomocą którego jest możliwość wyświetlania nazwy podmontowanego dysku oraz zajętego miejsca. Problem polega na tym, iż np. na Centosie 7 on działa poprawnie a na RHEL 5 już innaczej. Prawdopodobnie na starszym systemie jest jakieś przesunięcie i wartości są błędnie przesyłane.

#!/bin/sh
df -h | awk '{ print $5 " " $6 }' | while read output;
do
#  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
#  echo $usep
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -le 90 ]; then
    echo " [INFO] Server X $(date +%FT%T) Zajete miejsce na dysku: $partition wynosi $usep%"
     fi

  if [ $usep -ge 90 ]; then
    echo " [ERROR] Server X $(date +%FT%T) Zajete miejsce na dysku: $partition wynosi $usep%"
     fi
done

Cytuj
[root@mail01 Skrypty]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_mail01-lv_root
                       14G   12G  1.7G  87% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             477M   98M  354M  22% /boot
/dev/mapper/vg_zasob-LV_zasob
                       99G  134M   94G   1% /mnt/dysk
10.1.150.31:/Backup/Backup/Test
                       49T   34T   15T  70% /mnt/backup

Cytuj
[root@mail01 Skrypty]# df -h | awk '{ print $5 " " $6 }'
Use% Mounted

/
0% /dev/shm
22% /boot

/mnt/dysk

/mnt/backup

A wynik zapytania wyświetla się tak:

Cytuj
[root@mail01 Skrypty]# ./df-h.sh
./df-h.sh: line 8: [: Use: integer expression expected
./df-h.sh: line 12: [: Use: integer expression expected
./df-h.sh: line 8: [: -le: unary operator expected
./df-h.sh: line 12: [: -ge: unary operator expected
./df-h.sh: line 8: [: /: integer expression expected
./df-h.sh: line 12: [: /: integer expression expected
 [INFO] Server X 2019-06-13T13:28:59 Zajete miejsce na dysku: /dev/shm wynosi 0%
 [INFO] Server X 2019-06-13T13:28:59 Zajete miejsce na dysku: /boot wynosi 22%
./df-h.sh: line 8: [: -le: unary operator expected
./df-h.sh: line 12: [: -ge: unary operator expected
./df-h.sh: line 8: [: /mnt/dysk: integer expression expected
./df-h.sh: line 12: [: /mnt/dysk: integer expression expected
./df-h.sh: line 8: [: -le: unary operator expected
./df-h.sh: line 12: [: -ge: unary operator expected
./df-h.sh: line 8: [: /mnt/backup: integer expression expected
./df-h.sh: line 12: [: /mnt/backup: integer expression expected

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3047
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Skrypt sprawdzający miejsce na dysku
« Odpowiedź #1 dnia: 2019-06-13, 13:55:00 »
Jeżeli coś może zmienić swój format, wymuś własny:

#!/bin/sh

# Z df wyświetl tylko kolumny z punktem montowania i zajętością
# | pomiń wiersz nagłówka (a.k.a. zacznij wyświetlać od drugiej linii)
# | wytnij procenty
# | parsuj te dwa pola do zmiennych _PA (mountpoint) i _US (użycie)

df --output="target,pcent" | tail -n+2 | tr -d '%' | while read _PA _US
do
    if [ $_US -le 90 ]; then
        echo " [INFO] Server X $(date +%FT%T) Zajete miejsce na dysku: ${_PA} wynosi ${_US}%"
    else
        echo " [ERROR] Server X $(date +%FT%T) Zajete miejsce na dysku: ${_PA} wynosi ${_US}%"
    fi
done
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy