noratxMedlem sedan feb. 200193 inlägg Helloj!
Jag har ett mindre problem.
Jag har forsokt att soka pa google, men just nu vet jag inte riktigt vad jag ska leta efter.
Jag behover skapa ett script for att kontrollera och jamfora diskutrymme.
Scriptet skall helt enkelt gora en df (-h) och jamfora med en satt variabel.
Om returvardet fran df ar storre an den satta variabeln, skall den skicka mig ett mail.
Sa det jag helt enkelt behover hjalp med, ar, hur jag skall kunna plocka ut vardet fran df och jamfora med variabeln...
variabel = 8 #(GB)
noratx@beacon # ~ # df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 35G 11G 21G 34% /
devfs 1.0K 1.0K 0B 100% /dev
Hur kan jag plocka ut vardet fran Avail och jamfora det med variabeln?
En awk for att plocka ut antar jag, men awk och jag ar inte kompisar, sa jag vet inte riktigt hur jag ska gora.
Och en IF sats for att utfora testen? Men hur den IF satsen ska se ur har jag ingen aning om.
i2n2Medlem sedan jan. 2007177 inlägg Ett försök till principlösning med Mac OS X som OS och bash som shell.
df -h ger för detta system
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s3 56G 36G 20G 64% /
devfs 96K 96K 0B 100% /dev
fdesc 1.0K 1.0K 0B 100% /dev
<volfs> 512K 512K 0B 100% /.vol
automount -nsl [126] 0B 0B 0B 100% /Network
automount -fstab [160] 0B 0B 0B 100% /automount/Servers
automount -static [160] 0B 0B 0B 100% /automount/static
Mitt princip script blir då
#!/bin/bash
WARNING_LEVEL=8 # 8 GB is the level that triggers a warning
DISK_PAT='disk0s3' # Unique "disk line" identifier in the df output
FREE_SPACE=$(df -h | grep $DISK_PAT | awk '{print $4}' | sed s/G//)
if (( $FREE_SPACE < $WARNING_LEVEL ))
then
echo "Send Mail with status warning "$FREE_SPACE "GB free space"
else
echo "Send Mail with status ok "$FREE_SPACE "GB free space"
fi
exit 0
Anmärkning: Att använda "sed s/G//" för att plocka bort G ur resultatet för Avail-värdet är inte riktigt bra eftersom det kan stå t.ex. K där och då fungera inte if satsen längre. I Mac OS X kan man i detta fall köra df -g och få resultatet i GB utan enhet och därmed kunna skippa detta sed-steg för att ta bort enheten.