21.4 Network Logon Script Magic


There are several opportunities for creating a custom network startup configuration environment.

  • No Logon Script.

  • Simple universal Logon Script that applies to all users.

  • Use of a conditional Logon Script that applies per user or per group attributes.

  • Use of Samba's preexec and postexec functions on access to the NETLOGON share to create a custom logon script and then execute it.

  • User of a tool such as KixStart.

The Samba source code tree includes two logon script generation/execution tools. See examples directory genlogon and ntlogon subdirectories.

The following listings are from the genlogon directory.

This is the genlogon.pl file:

 
 #!/usr/bin/perl # # genlogon.pl # # Perl script to generate user logon scripts on the fly, when users # connect from a Windows client. This script should be called from # smb.conf with the %U, %G and %L parameters. I.e: # # root preexec = genlogon.pl %U %G %L # # The script generated will perform # the following: # # 1. Log the user connection to /var/log/samba/netlogon.log # 2. Set the PC's time to the Linux server time (which is maintained # daily to the National Institute of Standard's Atomic clock on the # internet. # 3. Connect the user's home drive to H: (H for Home). # 4. Connect common drives that everyone uses. # 5. Connect group-specific drives for certain user groups. # 6. Connect user-specific drives for certain users. # 7. Connect network printers. # Log client connection #($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); open LOG, "<</var/log/samba/netlogon.log"; print LOG "$mon/$mday/$year $ hour :$min:$sec"; print LOG " - User $ARGV[0] logged into $ARGV[1]\n"; close LOG; # Start generating logon script open LOGON, "</shared/netlogon/$ARGV[0].bat"; print LOGON "\@ECHO OFF\r\n"; # Connect shares just use by Software Development group if ($ARGV[1] eq "SOFTDEV"  $ARGV[0] eq "softdev") { print LOGON "NET USE M: \\\\$ARGV[2]\\SOURCE\r\n"; } # Connect shares just use by Technical Support staff if ($ARGV[1] eq "SUPPORT"  $ARGV[0] eq "support") { print LOGON "NET USE S: \\\\$ARGV[2]\\SUPPORT\r\n"; } # Connect shares just used by Administration staff If ($ARGV[1] eq "ADMIN"  $ARGV[0] eq "admin") { print LOGON "NET USE L: \\\\$ARGV[2]\\ADMIN\r\n"; print LOGON "NET USE K: \\\\$ARGV[2]\\MKTING\r\n"; } # Now connect Printers. We handle just two or three users a little # differently, because they are the exceptions that have desktop # printers on LPT1: - all other user's go to the LaserJet on the # server. if ($ARGV[0] eq 'jim'  $ARGV[0] eq 'yvonne') { print LOGON "NET USE LPT2: \\\\$ARGV[2]\\LJET3\r\n"; print LOGON "NET USE LPT3: \\\\$ARGV[2]\\FAXQ\r\n"; } else { print LOGON "NET USE LPT1: \\\\$ARGV[2]\\LJET3\r\n"; print LOGON "NET USE LPT3: \\\\$ARGV[2]\\FAXQ\r\n"; } # All done! Close the output file. close LOGON; 

Those wishing to use more elaborate or capable logon processing system should check out these sites:

  • http://www.craigelachi.e.org/rhacer/ntlogon

  • http://www.kixtart.org

21.4.1 Adding Printers without User Intervention

Printers may be added automatically during logon script processing through the use of:

 
 C:\> rundll32 printui.dll,PrintUIEntry /? 

See the documentation in the Microsoft knowledgebase article 189105. [2]

[2] http://support.microsoft.com/default.asp?scid=kb;en-us;189105



Official Samba-3 HOWTO and Reference Guide
The Official Samba-3 HOWTO and Reference Guide, 2nd Edition
ISBN: 0131882228
EAN: 2147483647
Year: 2005
Pages: 297

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net