#!/usr/bin/perl # # zquota v1.06 by APz/ZDC # # Yksinkertainen, joskin selvä quotannäyttäjä. Tämä versio perustuu quota- # komentoon ja pipeen, tarjolla myös perl-quotalla toimiva tehokkaampi versio. # Tämä on taas tällänen parin siiderin versio, mutta minkäs mahtaa. :) # 1.06 feat LSD colors - "jei mikä trippi!" # 25.6.05 - hienosäätöä, jotta saadaan usean partition tiedot näkyviin. -ozkuu # 3.9.08 - NFS quotat näkyviin, eli rivitys pois quota käskystä ja var quota pois näkyvistä -Esa # 11.12.08 - Expiroitumisen tulostuminen lisätty scriptin loppuun. -Esa sub around { my $around_in=$_[0]; $around_in=sprintf("%d",$around_in); return $around_in; } sub drawbar { my $percent=$_[0]; my $litbars=0; my $barcount=0; if ($percent>1) { $litbars=&around($percent/10); } else { $litbars=0; } my $darkbars=10-$litbars; print "["; while ($litbars) { $litbars--; $barcount++; if ($barcount==7) { print ""; } if ($barcount==9) { print ""; } print "O"; } print ""; while ($darkbars) { $darkbars--; $barcount++; print "."; } print "] $percent%"; } sub listquota { # Parametreina partition sijainti, ja nimi $partition = $_[0]; $partname = $_[1]; # Right-o - meillä ei ole perl-quotaa, joten kiskomme arvot perinteiseltä quotalta... # grepataan halutun partition nimi outputista. Käytetään quota -v:tä, jolloin # tyhjäkin partitio tulee mukaan. open($rawquota,"quota -vw|grep $partition|"); my @quotaresult=<$rawquota>; close($rawquota); # Ja mitä saatiin? Jos ekalla rivillä lukee 'none', tiedämme, ettei quotaa # ole ja toimimme sen mukaan. if (index($quotaresult[0],"none")!=-1) { # Zerolla taidamme olla kuin kusi sukassa, jos näin on. print "No quota\n"; } else { # Muuten kerromme tilanteen. # oli $quotaresult[2], mutta grep palauttaa vain yhden rivin, jolloin # otetaan talteen pelkästään ensimmäinen rivi. @quota=split(" ", $quotaresult[0]); # Laskemme ensin käyttöprosentin, pyöristettynä. if ($quota[2]==0) { # ruma div/0-hack $usepercent=100; } else { $usepercent=&around(($quota[1]*100)/$quota[2]); } # Ei mennä koskaan yli if ($usepercent>100) { $usepercent=100; } # Quota käyttää 1 kilon blokkeja, joten siirrymme megoihin. $quotaused=&around($quota[1]/1024); $quotatotal=&around($quota[2]/1024); my $quotacolor=""; my $quotawarn=""; # Mikäli quota on ylitetty, bitchaamme aiheesta. if ($quota[1]>$quota[2]) { $quotawarn=" ** QUOTA YLITETTY **"; $quotacolor=""; } # print "Quota: $quotacolor$quotaused M/$quotatotal M  "; # uusi printtaussysteemi, jätetään useampi merkki tilaa # megamäärille, jolloin rivitys menee tasan. Printataan myös partition nimi printf("%s: %s%3s M/%3s M  ", $partname, $quotacolor, $quotaused, $quotatotal); &drawbar($usepercent); print "$quotawarn"; print "\n"; } } print "Quota:\n"; # partitiot ja niiden nimet, joiden quota näytetään &listquota("/pool0/home", "Home"); &listquota("/dev/sda2", "Temp"); #&listquota("/dev/sda4", "Var"); #Laitetaan expiroituminen $cmd1="whoami"; $useri = qx/$cmd1/; chomp ($useri); $cmd2 = "/usr/bin/ldapsearch -x -h 10.10.10.60 -b dc=zerodistance,dc=fi uid=$useri shadowExpire | grep shadowExpire: | awk '{ print \$2 }'"; $expire = qx/$cmd2/; chomp ($expire); $expireday=$expire*86400; $cmd3 = "date +%s"; $today = qx/$cmd3/; $jaljella=$expireday-$today; $jaljella=$jaljella/86400; $jaljella = sprintf("%.f", $jaljella); $expireday = sprintf("%.f", $expireday); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime( $expireday ); $year+=1900; $mon++; #print "$cmd2\n"; #print "$useri\n"; print "\nKäyttäjätunnus $useri vanhenee: "; printf "%02d-%02d-%04d" , $mday , $mon , $year; print " - aikaa jäljellä $jaljella päivää\n\n"; close($today);