geretcondit
Goto Top

Ordner Größe auslesen und vergleichen

Hallo Liebe mit Administratoren/innen,

ich habe mal wieder ein Script Problem. Heute ist es aber mal Linux, ich habe ein simples Skript welches zu Monitoring Zwecken die Größe eines Ordners ausliest und diese mit einem eingegeben wert vergleichen soll.

Dies dient dazu damit wir feststellen können wie viel speicher ein Kunde bei uns belegt und ob eventuell sein "Paket" aufgestuft werden muss.

Das ganze läuft dann durch unsere Monitorring Software, etc...

Hier einmal das Skript:

#!/bin/bash
# This scipt checks quota for specific users on specific partitions

# Parameters:
# 1 = Customer Folder Name
# 2 = Partition
# 3 = Rented space, size for warning

$1= /Kundenordner
$2= /data
$3= 100


# check if all parameters are set
if [ -z "$1" ]; then  
        echo "Missing parameter for username!"  
        exit 1001
fi
if [ -z "$2" ]; then  
        echo "Missing parameter for partition!"  
        exit 1001
fi
if [ -z "$3" ]; then  
        echo "Missing parameter for quota size warning!"  
        exit 1001
fi

#Gets folder Size in Bytes
$FolderSize = du -b $2+$1

#Converts the FolderSize Bytes to GB
$kilo="$(( $FolderSize / 1024 ))"  
$mega="$(( $kilo / 1024 ))"  
$giga="$(( $mega / 1024 ))"  

#Gets folder Size in Human Readable
$HUFodlerSize = du -sh $2+$1


if [ $giga -eq $3 ]; then
        echo "Warning Limit Reached, used: $HUFodlerSize, limit: $3 GB"  
        exit 1001
elif [ $giga -gt $3 ]; then
        echo "Folder Size has extennded over Maximum, used: $HUFodlerSize, limit: $3 GB"  
        exit 1001
else
        echo "Quota not exceeded, used: $HUFodlerSize, limit: $3 GB"  
        exit 0
fi

Nun bekomme ich folgende Fehler Meldungen:

scripts/21727.sh: line 29: =: command not found
scripts/21727.sh: line 32: / 1024 : syntax error: operand expected (error token is "/ 1024 ")
scripts/21727.sh: line 33: / 1024 : syntax error: operand expected (error token is "/ 1024 ")
scripts/21727.sh: line 34 / 1024 : syntax error: operand expected (error token is "/ 1024 ")
scripts/21727.sh: line 37: =: command not found
scripts/21727.sh: line 40: [: ==: unary operator expected
scripts/21727.sh: line 43: [: -gt: unary operator expected
Quota not exceeded, used: , limit: 100 GB


Ich bin echt nicht eingearbeitet in Bash und könnte echt etwas Hilfe gebrauchen.

Danke im Voraus für jede antwort

Content-ID: 369558

Url: https://administrator.de/forum/ordner-groesse-auslesen-und-vergleichen-369558.html

Ausgedruckt am: 25.12.2024 um 02:12 Uhr

laster
laster 28.03.2018 um 16:21:06 Uhr
Goto Top
Hallo,

versuch doch mal die Befehle einzeln auszuführen, z.B. den in Zeile 29, dann siehst Du, wo es klemmt....

Gruß
LS
Cthluhu
Cthluhu 28.03.2018 um 16:25:11 Uhr
Goto Top
Hallo!

$FolderSize = du -b $2+$1
führt das Programm aus zum dem die Variable $FolderSize verweißt (mit den Argumenten
= du -b $2+$1

Was du da vermutlich möchtest ist eine Zuweisung, also
FolderSize = du -b $2+$1
(ohne das führende Dollarzeichen)

mfg

Cthluhu
laster
laster 28.03.2018 um 16:39:34 Uhr
Goto Top
hallo,,
"du -b /verzeichnis" listet alle Unterverzeichnisse mit ihren belegten Platz auf.

probier mal du -b -s /verzeichnis...

A=/home
B=/user
C=$A+$B

echo $C --> "/home+/user"

desswegen, die Befehle mal einzeln testen.

vG
LS
laster
Lösung laster 28.03.2018 um 16:49:02 Uhr
Goto Top
BYTES=$(du -b -s /verzeichnis | awk -F" " '{print $1}')  
echo "Groesse: $BYTES "  
GeretCondit
GeretCondit 13.02.2019 um 16:39:26 Uhr
Goto Top
Ich habe hier nochmal eine andere Lösung erarbeitet.


  1. check if all parameters are set
if [ -z "$1" ]; then
echo "Missing parameter for Customer!"
exit 1001
fi
if [ -z "$2" ]; then
echo "Missing parameter for partition!"
exit 1001
fi
if [ -z "$3" ]; then
echo "Missing parameter for size warning!"
exit 1001
fi

Var=1024

#Gets folder Size in Bytes
FolderSize=$(du -s -B1 $2$1 | awk '{print $1}');

#Converts the FolderSize Bytes to Human Readable
kilo=$(( $FolderSize/$Var))
mega=$(( $kilo/$Var ))
giga=$(( $mega/$Var ))


if (( "$giga" == "$3" )); then
echo "Warning Limit Reached, used: $giga GB, limit: $3 GB"
exit 1001
elif (("$giga" > "$3" )); then
echo "Folder Size has extennded over Maximum, used: $giga GB, limit: $3 GB"
exit 1001
else
echo "Quota not exceeded, used: $giga GB, limit: $3 GB"
exit 0
fi


Falls jemand mal genau das gleich suchen sollte face-smile