Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
witam,
Napisałem chyba uniwersalny skrypt dla moich serwerów, ale mam mały problem z porównaniem w if.
Głównie chodzi mi o to by sprawdzał wszystkie partycja sda, na różnych serwerach mają one różne numery i różne punkty montowań.
Tyle napisałem, ale cały czas zwraca mi błąd
DYSK="sda" CHECK=`df -h |awk "/$DYSK/" |awk -F' ' '{print $5}'` for SIZE in ${CHECK} do if [ "${SIZE}" -ge "22%" ]; then echo "mało miejsca" else echo "ok" fi done
Ale cały czas czepia się o to co jest w IF
./disk_space.bsh: line 15: [: 9%: integer expression expected ok ./disk_space.bsh: line 15: [: 23%: integer expression expected ok ./disk_space.bsh: line 15: [: 14%: integer expression expected ok ./disk_space.bsh: line 15: [: 2%: integer expression expected ok
Czy można porównać jakoś wartości cyfrowe ze znakiem procentu czy nie ma takiej możliwości ?
Ostatnio edytowany przez redelek (2010-04-28 08:40:51)
Offline
#!/bin/bash DYSK="sda" CHECK=`df -h |awk "/$DYSK/" |awk -F' ' '{print $5}'` for SIZE in ${CHECK} do SIZE=${SIZE%\%} if [ "${SIZE}" -ge "22" ]; then echo "mało miejsca" else echo "ok" fi done
Offline
super dziękuję tego mi brakowało :)
Offline
Jeszcze jedno pytanko,
Czy można zagnieśdzić jakoś funkcję for?
Problem jest z pobraniem nazw tych partycji
DYSK="sda" CHECK=`df -h |awk "/$DYSK/" |awk -F' ' '{print $5}'` NAZWA=`df -h |awk "/$DYSK/" |awk -F' ' '{print $6}'` MAXSIZE="20" for SIZE in ${CHECK} do SIZE=${SIZE%\%} if [ "${SIZE}" -ge ${MAXSIZE} ]; then echo "mało miejsca $L" else echo "ok" fi done
Czy można to zrobić w jednej pętli for, żeby pobrał NAZWY ?
Ostatnio edytowany przez redelek (2010-04-28 13:18:22)
Offline
Zrób to jak należy:
DYSK="" MAXSIZE="" df -h | while read line; do if ! echo "$line" |grep -q "$DYSK"; then continue fi ZAJETY=$(echo "$line" |awk '{print $5'}) ZAJETY=${ZAJETY%\%} if [ "${ZAJETY}" -ge ${MAXSIZE} ]; then echo "kończy się miejsce na $(echo "$line" |awk '{print $6'})" fi done
Offline
DZIĘKUJĘ !!!
KŁANIAM SIĘ W PAS i DZIĘKI !!!!! :)
Offline
Strony: 1