webForumDet fria alternativet

scripthjalp

1 svar · 347 visningar · startad av noratx

noratxMedlem sedan feb. 200193 inlägg
#1

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
#2

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.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)