Index: [Article Count Order] [Thread]

Date:  Thu, 23 Feb 2006 18:58:58 -1000
From:  MuntadaNet Webmaster <webmaster (at mark) muntada.com>
Subject:  [coba-e:04160] Re: Bug fixes: Please use version 0.02a only  ignore 0.01a
To:  coba-e (at mark) bluequartz.org
Message-Id:  <7.0.0.16.2.20060223185658.05508eb0 (at mark) muntada.com>
In-Reply-To:  <20060223204621.1996ca15 (at mark) localhost.localdomain>
References:  <057601c62666$b9a473c0$02002c0a (at mark) WebHoster> <Pine.LNX.4.44.0602010050050.19226-100000 (at mark) staff.singnet.com.sg> <20060221202810.455b1cfd (at mark) localhost.localdomain> <20060221213326.79e10fc5 (at mark) localhost.localdomain> <20060221213731.2e11f783 (at mark) localhost.localdomain> <20060223204621.1996ca15 (at mark) localhost.localdomain>
X-Mail-Count: 04160

<html>
<body>
Patrick,<br><br>
This is great.&nbsp; However, what about the situation in which booting
into single user mode is really not possible since remote management is
the only realistic option?&nbsp; SOme of us can easily walk up to the
system others have systems in data centers that may be difficult or
costly to get to.<br><br>
<br><br>
-Rashid<br><br>
At 02:46 AM 2/23/2006, you wrote:<br><br>
<blockquote type=cite class=cite cite="">Hi,<br><br>
Silly mistake.<br>
Causing Group quota not to sync.<br><br>
Have fixed that<br><br>
<br>
#!/usr/bin/perl -w -I/usr/sausalito/perl
-I/usr/sausalito/handlers/base/vsite<br>
#<br>
#######&nbsp; meta-verify, version 0.02a<br>
#<br>
#&nbsp; <br>
#&nbsp; system(OS) &amp; database(codb aka meta) verification and
integrity check utility<br>
#&nbsp; for the Cobalt 550 / Bluequartz&nbsp; product family<br>
#<br>
#&nbsp; Patrick Ong Tiong Heng (patricko (at mark) staff.singnet.com.sg)<br>
#<br>
#<br>
#<br>
#######&nbsp; OPERATION<br>
#<br>
#&nbsp; meta-verify -u -q | -s -q | -a | [-v] [-h] <br>
# <br>
#&nbsp;&nbsp;&nbsp; -u&nbsp;&nbsp; user<br>
#&nbsp;&nbsp;&nbsp; -s&nbsp;&nbsp; virtual site<br>
#<br>
#&nbsp;&nbsp;&nbsp; -q&nbsp;&nbsp; quota<br>
#&nbsp;&nbsp;&nbsp; -a&nbsp;&nbsp; all | users + virtual sites <br>
#<br>
#&nbsp;&nbsp;&nbsp; -v&nbsp;&nbsp; verbose <br>
#&nbsp;&nbsp;&nbsp; -h&nbsp;&nbsp; usage help<br>
#<br>
#<br>
#<br>
#######&nbsp; DESCRIPTION<br>
#<br>
#<br>
#&nbsp; Actually, this script should call system-verify as it attempts to
detect and <br>
#&nbsp; repair coherency problems between the state saved in the database
and <br>
#&nbsp; the system configuration state. In order to let cobalt users feel
&quot;at home&quot;,<br>
#&nbsp; I decided to retain the name: meta-verify.<br>
#<br>
#&nbsp; - (KIV) Verify and repair virtual sites.<br>
#&nbsp; - (KIV) Verify and repair user accounts.<br>
#&nbsp; - (KIV )Maintain intergrity of the RaQ system configuration
files.<br>
#&nbsp; - (Partial - Only Quota) Ensure coherency between System and
Meta/quota backend.<br>
#<br>
#<br>
#######&nbsp; INSTRUCTION<br>
#<br>
# For fixing corrupted User,Group Quotas, boot server to Single
mode.<br>
# And run:<br>
#<br>
# 1)<br>
#&nbsp; quotacheck /home<br>
#&nbsp; quotacheck -g /home<br>
#<br>
# 2)<br>
# Reboot.<br>
#<br>
# 3)<br>
# Run: metaverify -a and wait (process will printout set Quotas without
errors)<br>
# Sync, sync, sync. And reboot again.<br>
#<br>
# 4)<br>
# Run: repquota /home (integrity checking)<br>
# make sure SITExx-logs, admin accounts DO NOT HAVE quota.<br>
# if there are some entries, remove them manually via edquota<br>
#<br>
# <br>
#######&nbsp; SUPPORTED SYSTEMS<br>
#<br>
#&nbsp; Cobalt 550, Bluequartz<br>
#<br>
#<br>
#######&nbsp; CHANGELOG<br>
#<br>
#<br>
# version 0.02a (Feb 23 2006)<br>
#&nbsp;&nbsp; - Fixed typo, Group quota not able to sync from Meta to
Disk<br>
#&nbsp;&nbsp; - Added INSTRUCTION section<br>
#<br>
# version 0.01a (Feb 21 2006)<br>
#&nbsp;&nbsp; - initial creation alpha<br>
#<br>
#<br>
#######<br><br>
BEGIN {<br>
&nbsp;&nbsp;&nbsp; require CCE;<br>
&nbsp;&nbsp;&nbsp; require Quota;<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; use Getopt::Std;<br><br>
&nbsp;&nbsp;&nbsp; use vars qw($TITLE $VERSION $AUTHOR
$COPYRIGHT);<br><br>
&nbsp;&nbsp;&nbsp; $TITLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&quot;meta-verify&quot;;<br>
&nbsp;&nbsp;&nbsp; $VERSION&nbsp;&nbsp;&nbsp;&nbsp; =
&quot;0.01a&quot;;<br>
&nbsp;&nbsp;&nbsp; $AUTHOR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &quot;Patrick
Ong Tiong Heng (patricko\ (at mark) staff.singnet.com.sg)&quot;;<br>
&nbsp;&nbsp;&nbsp; $COPYRIGHT&nbsp;&nbsp; =
&quot;bluequartz.org&quot;;<br>
}<br><br>
<br>
use CCE;<br>
use strict;<br>
use Quota;<br><br>
my $path = &quot;/home&quot;;<br>
my $dev;<br>
my $uid = &quot;&quot;;<br>
my $uqs = &quot;&quot;;<br>
my $uqh = &quot;&quot;;<br>
my $siteUID = &quot;&quot;;<br>
my $userUID = &quot;&quot;;<br><br>
use vars qw($opt_u $opt_s $opt_q $opt_a $opt_h $Verbose);<br><br>
<br><br>
<br><br>
# command-line arguments, verbose level<br>
getopts(&quot;usqavh&quot;);<br>
&nbsp;&nbsp;&nbsp; <br>
# usage help<br>
&amp;usage if ($opt_h);<br><br>
if ($opt_a) {<br>
&nbsp;&nbsp; &amp;meta2system();<br>
}<br>
elsif ($opt_u) {<br>
&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
}<br>
elsif ($opt_s) {<br>
&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
}<br>
elsif ($opt_q) {<br>
&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
}<br>
elsif ($Verbose) {<br>
&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
}<br>
else {<br>
&nbsp;&nbsp;&nbsp; &amp;usage;<br>
}<br>
print &quot;\n&quot; unless ($Verbose);<br>
exit 0;<br><br>
1;<br><br>
<br>
sub usage ()<br>
{<br><br>
&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot; usage: %s [options]\n&quot;,
$TITLE);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp; -u&nbsp;&nbsp;
user\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp; -s&nbsp;&nbsp; virtual
site\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp; -q&nbsp;&nbsp;
quota\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp; -a&nbsp;&nbsp; all \| users
+ virtual sites\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp; -v&nbsp;&nbsp;
verbose\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp; -h&nbsp;&nbsp;
help\n&quot;);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&nbsp;&nbsp;&nbsp; exit 1;<br>
}<br><br>
<br><br>
sub meta2system()<br>
{<br><br>
&nbsp;my $cce = new CCE;<br>
&nbsp;$cce-&gt;connectuds();<br>
&nbsp;my @vsites;<br>
&nbsp;my @vsitelist;<br>
&nbsp;my @userlist;<br>
&nbsp;my $hostname=`hostname`;<br>
&nbsp;chomp($hostname);<br><br>
&nbsp;$dev = Quota::getqcarg($path) || die &quot;$path:
$!\n&quot;;<br><br>
<br>
&nbsp;### Find Domain records<br><br>
&nbsp;@vsitelist = $cce-&gt;findx('Vsite');<br>
&nbsp;foreach my $vsite (@vsitelist) { <br>
&nbsp; my @userlist;<br>
&nbsp; my $siteNum;<br>
&nbsp; my $userNum;<br>
&nbsp; my $fqdn;<br>
&nbsp; my $domain;<br>
&nbsp; my $vsitequota;<br>
&nbsp; my $vsitequotaExtra;<br>
&nbsp; my $userquota;<br>
&nbsp; my $userquotaExtra;<br>
&nbsp; my ($ok, $object, $old, $new) = $cce-&gt;get($vsite);<br>
&nbsp; my ($vDiskok, $vDiskobject, $vDiskold, $vDisknew) =
$cce-&gt;get($vsite, &quot;Disk&quot;);<br><br>
&nbsp; $siteNum=&quot;${%{$object}}{'name'}&quot;;<br>
&nbsp; $domain=&quot;${%{$object}}{'domain'}&quot;;<br>
&nbsp; $fqdn=&quot;${%{$object}}{'fqdn'}&quot;;<br>
&nbsp; $vsitequota=&quot;${%{$vDiskobject}}{'quota'}&quot;;<br>
&nbsp; $vsitequota*=1024;<br>
&nbsp; $vsitequotaExtra=$vsitequota;<br>
&nbsp; $vsitequotaExtra+=1024;<br><br>
&nbsp; $siteUID = `quota -g $siteNum | head -1 | awk -F \&quot;gid
\&quot; '{print \$2}' | awk -F \&quot;): \&quot; '{print \$1}'` ;<br>
&nbsp; chomp($siteUID);<br>
&nbsp; $uid = $siteUID;<br>
&nbsp; $uqs = $vsitequota;<br>
&nbsp; $uqh = $vsitequotaExtra;<br><br>
&nbsp; unless(Quota::setqlim($dev, $uid, $uqs, $uqh, 0, 0, 0, 1)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;Quota set for $uid,
$domain, $siteNum, QUOTA\: $vsitequota\n&quot;;<br>
&nbsp; }<br>
&nbsp; print&nbsp; $fqdn.&quot; &quot;.$siteUID.&quot;
&quot;.$siteNum.&quot; &quot;.$vsitequota.&quot;
&quot;.$vsitequotaExtra.&quot;\n&quot;;<br><br>
<br>
&nbsp; ### Find User account<br><br>
&nbsp; @userlist = $cce-&gt;findx('User', {&quot;site&quot; =&gt;
&quot;$siteNum&quot;} );<br><br>
&nbsp; foreach my $user (@userlist) { <br>
&nbsp;&nbsp;&nbsp; my ($userOK, $userOBJ, $userOLD, $userNEW) =
$cce-&gt;get($user);<br>
&nbsp;&nbsp;&nbsp; my ($userDiskOK, $userDiskOBJ, $userDiskOLD,
$userDiskNEW) = $cce-&gt;get($user, &quot;Disk&quot;);<br>
&nbsp;&nbsp;&nbsp; #print
&quot;${%{$userOBJ}}{name}&quot;.&quot; (at mark) &quot;.&quot;$domain\n&quot;;<br>
&nbsp;&nbsp;&nbsp; $userNum=&quot;${%{$userOBJ}}{'name'}&quot;;<br>
&nbsp;&nbsp;&nbsp;
$userquota=&quot;${%{$userDiskOBJ}}{'quota'}&quot;;<br>
&nbsp;&nbsp;&nbsp; $userquota*=1024;<br>
&nbsp;&nbsp;&nbsp; $userquotaExtra=$userquota;<br>
&nbsp;&nbsp;&nbsp; $userquotaExtra+=1024;<br><br>
<br>
&nbsp;&nbsp;&nbsp; $userUID = `quota $userNum | head -1 | awk -F
\&quot;uid \&quot; '{print \$2}' | awk -F \&quot;): \&quot; '{print
\$1}'` ;<br>
&nbsp;&nbsp;&nbsp; chomp($userUID);<br>
&nbsp;&nbsp;&nbsp; $uid = $userUID;<br>
&nbsp;&nbsp;&nbsp; $uqs =&nbsp; $userquota;<br>
&nbsp;&nbsp;&nbsp; $uqh = $userquotaExtra;<br><br>
&nbsp;&nbsp;&nbsp; unless(Quota::setqlim($dev, $uid, $uqs, $uqh, 0, 0))
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print
&quot;Quota set for $uid, $domain, $userNum, QUOTA\:
$userquota\n&quot;;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; print $fqdn.&quot; &quot;.$userUID.&quot;
&quot;.$userNum.&quot; &quot;.$userquota.&quot;
&quot;.$userquotaExtra.&quot;\n&quot;;<br>
&nbsp; }<br><br>
&nbsp;}<br><br>
&nbsp;$cce-&gt;bye('SUCCESS');<br>
&nbsp;#exit(0);<br>
&nbsp;exit(1);<br><br>
}<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br>
Cheers<br>
patrick<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
On Tue, 21 Feb 2006 21:37:31 +0800<br>
patricko &lt;patricko (at mark) staff.singnet.com.sg&gt; wrote:<br><br>
&gt; Hi,<br>
&gt; <br>
&gt; Forgotten to add:<br>
&gt; <br>
&gt; after meta-verify, run<br>
&gt; repquota /home&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(integrity checking)<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; make sure SITExx-logs DO NOT HAVE quota.<br>
&gt; if there are some entries, remove them manually via edquota<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; Cheers<br>
&gt; patrick<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; On Tue, 21 Feb 2006 21:33:26 +0800<br>
&gt; patricko &lt;patricko (at mark) staff.singnet.com.sg&gt; wrote:<br>
&gt; <br>
&gt; &gt; Hi,<br>
&gt; &gt; <br>
&gt; &gt; Bluequartz DB out-of-sync with System-OS quota<br>
&gt; &gt; is a reality.(Personal experienced the below mentioned
issue)<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; Its an OS issue relating to ext3. The inodes or the
superblocks<br>
&gt; &gt; are &quot;dirty&quot; causing &quot;extra invisible users&quot;
or &quot;grand total of all users quota NOT equal to domain quota&quot;
<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; So we need to go a quota check as follow:<br>
&gt; &gt; <br>
&gt; &gt; [Single mode]<br>
&gt; &gt; quotacheck /home<br>
&gt; &gt; quotacheck -g /home<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; Sometimes, the system quotas are corrupted.<br>
&gt; &gt; Therefore, you need my meta-verify to SYNC <br>
&gt; &gt; the data back.<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; Cheers<br>
&gt; &gt; patrick<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; On Tue, 21 Feb 2006 20:28:10 +0800<br>
&gt; &gt; patricko &lt;patricko (at mark) staff.singnet.com.sg&gt; wrote:<br>
&gt; &gt; <br>
&gt; &gt; &gt; Hi Blues,<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; I have written a meta-verify utility for Bluequartz.<br>
&gt; &gt; &gt; It is in still development. <br>
&gt; &gt; &gt; ***But the basic CODB-meta -&gt; system-OS is working***
<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; The logic for writing meta-verify is because OS and
CODB-meta<br>
&gt; &gt; &gt; can be out-of-sync, especially system quota (when
corrupted with quotacheck) with CODB.<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; ps: Gavin, you can use this script to sync BQ-DB with
system quotas.<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;meta-verify&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; #!/usr/bin/perl -w -I/usr/sausalito/perl
-I/usr/sausalito/handlers/base/vsite<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #######&nbsp; meta-verify, version 0.01a<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp; <br>
&gt; &gt; &gt; #&nbsp; system(OS) &amp; database(codb aka meta)
verification and integrity<br>
&gt; &gt; &gt; check utility<br>
&gt; &gt; &gt; #&nbsp; for the Cobalt 550 / Bluequartz&nbsp; product
family<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp; Patrick Ong Tiong Heng
(patricko (at mark) staff.singnet.com.sg)<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #######&nbsp; OPERATION<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp; meta-verify -u -q | -s -q | -a | [-v] [-h] <br>
&gt; &gt; &gt; # <br>
&gt; &gt; &gt; #&nbsp;&nbsp;&nbsp; -u&nbsp;&nbsp; user<br>
&gt; &gt; &gt; #&nbsp;&nbsp;&nbsp; -s&nbsp;&nbsp; virtual site<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp;&nbsp;&nbsp; -q&nbsp;&nbsp; quota<br>
&gt; &gt; &gt; #&nbsp;&nbsp;&nbsp; -a&nbsp;&nbsp; all | users + virtual
sites <br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp;&nbsp;&nbsp; -v&nbsp;&nbsp; verbose <br>
&gt; &gt; &gt; #&nbsp;&nbsp;&nbsp; -h&nbsp;&nbsp; usage help<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #######&nbsp; DESCRIPTION<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp; Actually, this script should call system-verify as
it attempts to<br>
&gt; &gt; &gt; detect and <br>
&gt; &gt; &gt; #&nbsp; repair coherency problems between the state saved
in the database<br>
&gt; &gt; &gt; and <br>
&gt; &gt; &gt; #&nbsp; the system configuration state. In order to let
cobalt users feel<br>
&gt; &gt; &gt; &quot;at home&quot;,<br>
&gt; &gt; &gt; #&nbsp; I decided to retain the name: meta-verify.<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp; - (KIV) Verify and repair virtual sites.<br>
&gt; &gt; &gt; #&nbsp; - (KIV) Verify and repair user accounts.<br>
&gt; &gt; &gt; #&nbsp; - (KIV )Maintain intergrity of the RaQ system
configuration files.<br>
&gt; &gt; &gt; #&nbsp; - (Partial - Only Quota) Ensure coherency between
System and<br>
&gt; &gt; &gt; Meta/quota backend.<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #######&nbsp; SUPPORTED SYSTEMS<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #&nbsp; Cobalt 550, Bluequartz<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #######&nbsp; CHANGELOG<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; # version 0.01a (Feb 21 2006)<br>
&gt; &gt; &gt; #&nbsp;&nbsp; - initial creation alpha<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #<br>
&gt; &gt; &gt; #######<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; BEGIN {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; require CCE;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; require Quota;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; use Getopt::Std;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; use vars qw($TITLE $VERSION
$AUTHOR $COPYRIGHT);<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;
$TITLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&quot;meta-verify&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $VERSION&nbsp;&nbsp;&nbsp;&nbsp; =
&quot;0.01a&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;
$AUTHOR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &quot;Patrick Ong Tiong Heng
(patricko\ (at mark) staff.singnet.com.sg)&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $COPYRIGHT&nbsp;&nbsp; =
&quot;bluequartz.org&quot;;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; use CCE;<br>
&gt; &gt; &gt; use strict;<br>
&gt; &gt; &gt; use Quota;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; my $path = &quot;/home&quot;;<br>
&gt; &gt; &gt; my $dev;<br>
&gt; &gt; &gt; my $uid = &quot;&quot;;<br>
&gt; &gt; &gt; my $uqs = &quot;&quot;;<br>
&gt; &gt; &gt; my $uqh = &quot;&quot;;<br>
&gt; &gt; &gt; my $siteUID = &quot;&quot;;<br>
&gt; &gt; &gt; my $userUID = &quot;&quot;;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; use vars qw($opt_u $opt_s $opt_q $opt_a $opt_h
$Verbose);<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; # command-line arguments, verbose level<br>
&gt; &gt; &gt; getopts(&quot;usqavh&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt; &gt; &gt; # usage help<br>
&gt; &gt; &gt; &amp;usage if ($opt_h);<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; if ($opt_a) {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp; &amp;meta2system();<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; elsif ($opt_u) {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; elsif ($opt_s) {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; elsif ($opt_q) {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; elsif ($Verbose) {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp; print &quot;KIV\n&quot;;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; else {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; &amp;usage;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; print &quot;\n&quot; unless ($Verbose);<br>
&gt; &gt; &gt; exit 0;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; 1;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; sub usage ()<br>
&gt; &gt; &gt; {<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot; usage: %s
[options]\n&quot;, $TITLE);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp;
-u&nbsp;&nbsp; user\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp;
-s&nbsp;&nbsp; virtual site\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp;
-q&nbsp;&nbsp; quota\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp;
-a&nbsp;&nbsp; all \| users + virtual sites\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp;
-v&nbsp;&nbsp; verbose\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;&nbsp;&nbsp;
-h&nbsp;&nbsp; help\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\n&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; exit 1;<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; sub meta2system()<br>
&gt; &gt; &gt; {<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; my $cce = new CCE;<br>
&gt; &gt; &gt;&nbsp; $cce-&gt;connectuds();<br>
&gt; &gt; &gt;&nbsp; my @vsites;<br>
&gt; &gt; &gt;&nbsp; my @vsitelist;<br>
&gt; &gt; &gt;&nbsp; my @userlist;<br>
&gt; &gt; &gt;&nbsp; my $hostname=`hostname`;<br>
&gt; &gt; &gt;&nbsp; chomp($hostname);<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; $dev = Quota::getqcarg($path) || die &quot;$path:
$!\n&quot;;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; ### Find Domain records<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; @vsitelist = $cce-&gt;findx('Vsite');<br>
&gt; &gt; &gt;&nbsp; foreach my $vsite (@vsitelist) { <br>
&gt; &gt; &gt;&nbsp;&nbsp; my @userlist;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $siteNum;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $userNum;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $fqdn;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $domain;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $vsitequota;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $vsitequotaExtra;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $userquota;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my $userquotaExtra;<br>
&gt; &gt; &gt;&nbsp;&nbsp; my ($ok, $object, $old, $new) =
$cce-&gt;get($vsite);<br>
&gt; &gt; &gt;&nbsp;&nbsp; my ($vDiskok, $vDiskobject, $vDiskold,
$vDisknew) = $cce-&gt;get($vsite, &quot;Disk&quot;);<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;
$siteNum=&quot;${%{$object}}{'name'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;
$domain=&quot;${%{$object}}{'domain'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp; $fqdn=&quot;${%{$object}}{'fqdn'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;
$vsitequota=&quot;${%{$vDiskobject}}{'quota'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp; $vsitequota*=1024;<br>
&gt; &gt; &gt;&nbsp;&nbsp; $vsitequotaExtra=$vsitequota;<br>
&gt; &gt; &gt;&nbsp;&nbsp; $vsitequotaExtra+=1024;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; $siteUID = `quota -g $siteNum | head -1 | awk
-F \&quot;gid \&quot; '{print \$2}' | awk -F \&quot;): \&quot; '{print
\$1}'` ;<br>
&gt; &gt; &gt;&nbsp;&nbsp; chomp($siteUID);<br>
&gt; &gt; &gt;&nbsp;&nbsp; $uid = $siteUID;<br>
&gt; &gt; &gt;&nbsp;&nbsp; $uqs = $vsitequota;<br>
&gt; &gt; &gt;&nbsp;&nbsp; $uqh = $vsitequotaExtra;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; unless(Quota::setqlim($dev, $uid, $uqs, $uqh,
0, 0)) {<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print
&quot;Quota set for $uid, $domain, $siteNum, QUOTA\:
$vsitequota\n&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp; }<br>
&gt; &gt; &gt;&nbsp;&nbsp; print&nbsp; $fqdn.&quot;
&quot;.$siteUID.&quot; &quot;.$siteNum.&quot; &quot;.$vsitequota.&quot;
&quot;.$vsitequotaExtra.&quot;\n&quot;;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; ### Find User account<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; @userlist = $cce-&gt;findx('User',
{&quot;site&quot; =&gt; &quot;$siteNum&quot;} );<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; foreach my $user (@userlist) { <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; my ($userOK, $userOBJ, $userOLD,
$userNEW) = $cce-&gt;get($user);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; my ($userDiskOK, $userDiskOBJ,
$userDiskOLD, $userDiskNEW) = $cce-&gt;get($user, &quot;Disk&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; #print
&quot;${%{$userOBJ}}{name}&quot;.&quot; (at mark) &quot;.&quot;$domain\n&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;
$userNum=&quot;${%{$userOBJ}}{'name'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;
$userquota=&quot;${%{$userDiskOBJ}}{'quota'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userquota*=1024;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userquotaExtra=$userquota;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userquotaExtra+=1024;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userUID = `quota $userNum | head
-1 | awk -F \&quot;uid \&quot; '{print \$2}' | awk -F \&quot;): \&quot;
'{print \$1}'` ;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; chomp($userUID);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $uid = $userUID;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $uqs =&nbsp; $userquota;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $uqh = $userquotaExtra;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; unless(Quota::setqlim($dev, $uid,
$uqs, $uqh, 0, 0)) {<br>
&gt; &gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
print &quot;Quota set for $uid, $domain, $userNum, QUOTA\:
$userquota\n&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; print $fqdn.&quot;
&quot;.$userUID.&quot; &quot;.$userNum.&quot; &quot;.$userquota.&quot;
&quot;.$userquotaExtra.&quot;\n&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; $cce-&gt;bye('SUCCESS');<br>
&gt; &gt; &gt;&nbsp; #exit(0);<br>
&gt; &gt; &gt;&nbsp; exit(1);<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; ### Find User account<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; @userlist = $cce-&gt;findx('User',
{&quot;site&quot; =&gt; &quot;$siteNum&quot;} );<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp; foreach my $user (@userlist) { <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; my ($userOK, $userOBJ, $userOLD,
$userNEW) = $cce-&gt;get($user);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; my ($userDiskOK, $userDiskOBJ,
$userDiskOLD, $userDiskNEW) = $cce-&gt;get($user, &quot;Disk&quot;);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; #print
&quot;${%{$userOBJ}}{name}&quot;.&quot; (at mark) &quot;.&quot;$domain\n&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;
$userNum=&quot;${%{$userOBJ}}{'name'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;
$userquota=&quot;${%{$userDiskOBJ}}{'quota'}&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userquota*=1024;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userquotaExtra=$userquota;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userquotaExtra+=1024;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $userUID = `quota $userNum | head
-1 | awk -F \&quot;uid \&quot; '{print \$2}' | awk -F \&quot;): \&quot;
'{print \$1}'` ;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; chomp($userUID);<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $uid = $userUID;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $uqs =&nbsp; $userquota;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; $uqh = $userquotaExtra;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; unless(Quota::setqlim($dev, $uid,
$uqs, $uqh, 0, 0)) {<br>
&gt; &gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
print &quot;Quota set for $uid, $domain, $userNum, QUOTA\:
$userquota\n&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; print $fqdn.&quot;
&quot;.$userUID.&quot; &quot;.$userNum.&quot; &quot;.$userquota.&quot;
&quot;.$userquotaExtra.&quot;\n&quot;;<br>
&gt; &gt; &gt;&nbsp;&nbsp; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;&nbsp; $cce-&gt;bye('SUCCESS');<br>
&gt; &gt; &gt;&nbsp; #exit(0);<br>
&gt; &gt; &gt;&nbsp; exit(1);<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt;
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;END&gt;&gt;&gt;&gt;&gt;&gt;&gt;meta-verify&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; Cheers<br>
&gt; &gt; &gt; patrick<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; On Wed, 1 Feb 2006 00:59:00 +0800 (SGT)<br>
&gt; &gt; &gt; patricko (at mark) staff.singnet.com.sg wrote:<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; Some ideas,<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; use bluequartz system quota.<br>
&gt; &gt; &gt; &gt; Run a script read out all system quotas and<br>
&gt; &gt; &gt; &gt; re-populate via edquota.<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; or during maintenance night.<br>
&gt; &gt; &gt; &gt; Export all domain out via cmuExport.<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; then<br>
&gt; &gt; &gt; &gt; try destroy one domain and import it back.<br>
&gt; &gt; &gt; &gt;&nbsp; ~check: quota in tact? if so, continue with
others<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; or else you need to do up another server and move
all<br>
&gt; &gt; &gt; &gt; domains over as OS level - quota are broken beyond
repair<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; Cheers<br>
&gt; &gt; &gt; &gt; patrick&nbsp; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; On Tue, 31 Jan 2006, Gavin Nelmes-Crocker wrote:<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; Guys<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; I did something very bad<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; /sbin/quotacheck -c -u -g -a -v -f -m<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; The background to this was that I had users
showing up using far more disk<br>
&gt; &gt; &gt; &gt; &gt; space that they really were, this used to happen
on RaQ4's as well.<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; I started of with&nbsp; /sbin/quotacheck -c -u
-g -a -v<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; but it complained that I had to force it so I
added -f then it complained<br>
&gt; &gt; &gt; &gt; &gt; that it could mount /home as read only but to
force I could add -m and I<br>
&gt; &gt; &gt; &gt; &gt; did.<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; Great - the problem was sorted<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; DISASTER - I go back into the GUI and it looks
correct except I see that<br>
&gt; &gt; &gt; &gt; &gt; everyone now has unlimited quota.&nbsp; If I
edit a user I see that their<br>
&gt; &gt; &gt; &gt; &gt; original quota amount is still there (presumably
from the database) so is<br>
&gt; &gt; &gt; &gt; &gt; there a way to rewrite it all back to the system
or do I have to go into<br>
&gt; &gt; &gt; &gt; &gt; each user change their quota and then save.<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; There are several hundred users on the box - so
I really don't want to have<br>
&gt; &gt; &gt; &gt; &gt; to edit every single one if I can avoid it
:-)<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; I think the mistake was -c I think I should have
used&nbsp; /sbin/quotacheck -u<br>
&gt; &gt; &gt; &gt; &gt; -g -a -v -f -m<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; Thanks<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; Gavin<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; </blockquote>
<x-sigsep><p></x-sigsep>
***************************************************************** <br>
MuntadaNet Web Hosting and Web Design Services<br>
<font color="#0000FF"><u>
<a href="http://www.muntada.com/" eudora="autourl">
http://www.muntada.com<br><br>
</a></u></font>Sales - sales (at mark) muntada.com <br>
Support - support (at mark) muntada.com <br>
Billing - billing (at mark) muntada.com<br><br>
Main Office - 808-689-6092<br>
Fax - (808) 356-0279<br>
*****************************************************************<br><br>
</body>
</html>