Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




Samba HowTo Guide
Prev Home Next

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 file:

	# 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 = %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 Standards 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";
		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 a more elaborate or capable logon processing system should check out these sites:

Samba HowTo Guide
Prev Home Next

  Published under the terms fo the GNU General Public License Design by Interspire