Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Skrypt sprawdzający miejsce na dysku  (Przeczytany 1432 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: 3049
  • 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