]> andersk Git - moira.git/blame - gen/ca.gen
Command line printer manipulation client, and build goo.
[moira.git] / gen / ca.gen
CommitLineData
ad9f53c1 1#!/moira/bin/perl -Tw
2
3# $Id$
4
5# The following exit codes are defined and MUST BE CONSISTENT with the
6# error codes the library uses:
7$MR_DBMS_ERR = 47836421;
8$MR_OCONFIG = 47836460;
9
10$outfile = '/moira/dcm/ca.out';
11
12use DBI;
13$dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
14 || exit $MR_DBMS_ERR;
15
16# First, let's do people with NFS homedirs, since it's not hard.
17$sth = $dbh->prepare("SELECT n.nfsphys_id, n.dir, m.name ".
18 "FROM nfsphys n, machine m ".
19 "WHERE m.mach_id = n.mach_id ".
20 "ORDER BY n.nfsphys_id") || exit $MR_DBMS_ERR;
21
22$sth->execute || exit $MR_DBMS_ERR;
23
24umask 022;
25open(OUT, ">$outfile") || exit $MR_OCONFIG;
26
27while (($id, $dir, $machname) = $sth->fetchrow_array) {
28 next if ($id == 0);
29 $foo = $dbh->prepare("SELECT u.login, u.fullname ".
30 "FROM users u, filesys f ".
31 "WHERE f.label = u.login AND u.status = 1 ".
32 "AND f.phys_id = " . $dbh->quote($id));
33 $first = 1;
34 $foo->execute || exit $MR_DBMS_ERR;
35 while (($login, $fullname) = $foo->fetchrow_array) {
36 if ($first) {
37 $first = 0;
d1fe9613 38 $row = "*$machname:$dir\n";
39 $row =~ s/\0//g;
40 print OUT $row;
ad9f53c1 41 }
d1fe9613 42 $row = "$login,$fullname\n";
43 $row =~ s/\0//g;
44 print OUT $row;
ad9f53c1 45 }
46}
47
48#Now, let's do all the AFS homedirs. This will take a while longer.
49$sth = $dbh->prepare("SELECT UNIQUE u.login, u.fullname, f.name ".
50 "FROM users u, filesys f ".
51 "WHERE f.label = u.login AND u.status = 1 ".
52 "AND f.type = 'AFS' ".
53 "ORDER BY u.login") || exit $MR_DBMS_ERR;
54
55$sth->execute || exit $MR_DBMS_ERR;
56
6d400ea1 57$last = "";
ad9f53c1 58while (($login, $name, $dir) = $sth->fetchrow_array) {
59 $dir =~ /(\/.*)\//;
60 $path = $1;
61 if ($path ne $last) {
62 $last = $path;
d1fe9613 63 $row = "*AFS:$path\n";
64 $row =~ s/\0//g;
65 print OUT $row;
ad9f53c1 66 }
d1fe9613 67 $row = "$login,$name\n";
68 $row =~ s/\0//g;
69 print OUT $row;
ad9f53c1 70}
71
72close(OUT);
73$dbh->disconnect;
74
75exit 0;
This page took 0.071061 seconds and 5 git commands to generate.