Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Skrypt sprawdzający miejsce na dysku

Zaczęty przez graby0, Czerwiec 13, 2019, 12:49:41 PM

Poprzedni wątek - Następny wątek

graby0

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


Cytat[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

Cytat[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:

Cytat[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

TataPingu

Szczerze powiem, iż nie rozumiem Twojej intencji, czy celu skryptu...
- przecież, prościej jest np. coś takiego:

#!/bin/sh
#
#ODCZYT=$(df -h /home)
ODCZYT=$(df -h)
#
echo "Wolnej przestrzeni jest: ${ODCZYT}"
#
exit 0


Ale może chodzi Ci jeszcze o coś innego, nie wnikałem w przebieg...

lesio

Przetwarzanie pierwszej linii (nagłówka) powoduje powstanie błędów (chodzi o linię: Filesystem            Size  Used Avail Use% Mounted on). W tej linii nie ma liczb (bo to nagłówek opisujący), a jest przetwarzana (więc np. zamiast integera jest "nic" - stąd błąd)

Zobacz najnowsze wiadomości na forum