Programowanie > Bash, skrypty powłoki
Skrypt sprawdzający miejsce na dysku
(1/1)
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.
--- Kod: ---
#!/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
--- Koniec kodu ---
--- 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
--- Koniec cytatu ---
--- Cytuj ---[root@mail01 Skrypty]# df -h | awk '{ print $5 " " $6 }'
Use% Mounted
/
0% /dev/shm
22% /boot
/mnt/dysk
/mnt/backup
--- Koniec cytatu ---
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
--- Koniec cytatu ---
Paweł Kraszewski:
Jeżeli coś może zmienić swój format, wymuś własny:
--- Kod: ---
#!/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
--- Koniec kodu ---
Nawigacja
Idź do wersji pełnej