source: fedkit/smbmount.pl @ 45ed8ee

axis_examplecompt_changesinfo-opsversion-1.30version-2.00version-3.01version-3.02
Last change on this file since 45ed8ee was 45ed8ee, checked in by John Hickey <jhickey@…>, 17 years ago

Updated to use automounter.

  • Property mode set to 100755
File size: 2.5 KB
Line 
1#!/usr/local/bin/perl
2
3#############################################################################
4# smbmounts.pl: Setup Automounter to mount via SMB for federated experiments
5# $Id: smbmount.pl,v 1.3 2007-09-27 02:50:14 jhickey Exp $
6#
7
8$ADDR="users.isi.deterlab.net";
9$TMCC="/usr/local/etc/emulab/tmcc";
10$SHARE="USERS";
11$FSTAB="/etc/fstab";
12$HOMEROOT="/users";
13$AMDROOT="/auto";
14$AMDMAP="/etc/amd.users";
15
16$UMOUNT="/sbin/umount";
17$MOUNT="/sbin/mount";
18$MKDIR="/bin/mkdir";
19$CP="/bin/cp";
20$KILLALL="/usr/bin/killall";
21$AMD="/usr/sbin/amd";
22
23print "Killing amd.\n";
24system("$KILLALL amd");
25
26print "Unmounting all nfs and smb filesystems.\n";
27system("$UMOUNT -A -f -t nfs,smbfs"); # or die("Failed to unmount NFS");
28
29# Backup the fstab so we can run multiple times
30if (! -f "$FSTAB.bak") {
31        system("$CP $FSTAB $FSTAB.bak") && die("Unable to backup $FSTAB");
32} else {
33        system("$CP $FSTAB.bak $FSTAB") && die("Unable to restore $FSTAB");
34}
35
36open(TM, "$TMCC accounts windows |") or die("Failed to execute TMCC");
37open(CONFIG, ">/etc/nsmb.conf") or die("Failed to open /etc/nsmb.conf");
38open(MAP, ">$AMDMAP") or die("Failed to open /etc/amd.users");
39open(FSTAB,">>$FSTAB") or die("Cannot Open File $FSTAB");
40
41print FSTAB "\n# SMB Configuration Generated by smbmount.pl\n";
42print MAP "# AMD Configuration Generated by smbmount.pl\n";
43print CONFIG "# SMB Configuration Generated by smbmount.pl\n\n";
44print CONFIG "[$SHARE]\naddr=$ADDR\n\n";
45
46while(<TM>) {
47        if (/ADDUSER LOGIN=(\S+) PSWD=(\S+) UID=(\d+) GID=(\d+).*HOMEDIR=(\S+) / ) {
48                $user = $1;
49                $pswd = $2;
50                $uid  = $3;
51                $gid  = $4;
52                $homedir = $5;
53
54                $userlc = $user;
55                # SMB demands upper case.
56                $user =~  tr/a-z/A-Z/;
57                my $pass = `smbutil crypt '$pswd'`;
58
59                print CONFIG "[$SHARE:$user]\npassword=$pass\n";
60               
61                if(! -d "$AMDROOT$homedir") {
62                        system("$MKDIR -p $AMDROOT$homedir") && die("Failed to make directory");
63                }
64
65                print FSTAB "//$user\@$SHARE/$user\t";
66                print FSTAB "$AMDROOT$homedir\tsmbfs\t";
67                print FSTAB "noauto,rw,-N,-f744,-d755,-u$uid,-g$gid\t0\t0\n";
68
69                print MAP "\n$userlc type:=program;fs:=$AMDROOT$homedir;\\\n";
70                print MAP "mount:=\"$MOUNT mount $AMDROOT$homedir\";\\\n";
71                print MAP "unmount:=\"$UMOUNT unmount $AMDROOT$homedir\";";
72        }
73}
74
75close(CONFIG);
76close(FSTAB);
77close(MAP);
78
79print "Starting the automounter: $AMD -l syslog -a $AMDROOT $HOMEROOT $AMDMAP\n";
80system("$AMD -l syslog -a $AMDROOT $HOMEROOT $AMDMAP") && die("Unable to start amd");
Note: See TracBrowser for help on using the repository browser.