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


Członek DUG



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
doneAle 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
doneOffline


Członek DUG



super dziękuję tego mi brakowało :)
Offline


Członek DUG



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
doneCzy można to zrobić w jednej pętli for, żeby pobrał NAZWY ?
Ostatnio edytowany przez redelek (2010-04-28 13:18:22)
Offline




Użyszkodnik
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
doneOffline


Członek DUG



DZIĘKUJĘ !!!
KŁANIAM SIĘ W PAS i DZIĘKI !!!!! :)
Offline
Strony: 1