[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Offtopic: Setting Passwords



Yes I got several good answers, my favorite was:

useradd username
echo "username:password:uid:gid:Full Name:path:shell" | newusers
echo "Full.Name:\t\tusername" >> /etc/aliases

I however used:

useradd username -c "Full Name"
echo "username:password:::::" | newusers
echo "Full.Name:\t\tusername" >> /etc/aliases

Just keep the correct number of : and everything will be okay.

I wrote another script to extract the information from a file and automatically generate passwords and then it wrote the above script for the accounts it follows (this script also generates a lyx file, but I never found out how to easily print them -- next time I will create postscript or latex files -- I know there are converters for all this stuff, but know one could tell me how to generate the paperwork easily -- oh well):

#!/usr/bin/perl

# output the following to a file (students.sh):
#	#!/bin/sh
#	cp /etc/aliases /etc/aliases.bak
# 	

# loop throught the file with student names

# 	read next line of student file
#	student file should have the following format:
#	"Lastname; Firstname","YOG"<CR>

# 	parse each line of the student file (tab deliminated)

# 	output each line to a file with the following format:
#	useradd lastfirs -c "Firstname Lastname -- YOG"
#	cat "firstname.lastname:	lastfirs" >> /etc/aliases

# go to next line in student file

# output:
#	newaliases


# initialize the random number generator.
srand(time ^ $$ ^ unpack "%32L", `ps axww | gzip`);	

# create list of valid password characters
@chars = ("A" .. "Z", "a" .. "z", 0 .. 9, qw(! # $ % ^ & * , . ? - _ +));

print "Enter the current year of graduation YYYY: ";
$date = <STDIN>;
chomp($date);

open (OUTPUT, '>students.sh') || die "Couldn't open output file";

print OUTPUT <<Headers;
#!/bin/bash;
cp /etc/aliases /etc/aliases.bak

Headers

open (INFILE, '<Students.txt') || die "Couldn't read input file";
while (<INFILE>) {
	chomp ($_);
	($Longname, $Advisor, $yog) = split(/","/,$_);

	$Longname =~ s/;/,/;		# convert ; into , 
	$Longname =~ s/"//g;		# remove quotes
	$Advisor =~ s/"//g;
	$yog =~ s/"//g;			
	($Lastname, $Firstname) = split (/,/, $Longname);
	$Firstname =~ s/ //;		# leading (1st) space
	$last = $Lastname;
	$first = $Firstname;
	$last =~ s/([^\W0-9_])/\l$1/g;	# make lowercase
	$first =~ s/([^\W0-9_])/\l$1/g;	
	$last =~ s/ /-/g;		# replace spaces with dashes
	$first =~ s/ /-/g;		
	$slast = $last;			# create short names
	$sfirst = $first;
	$slast =~ s/-//g;		# remove dashes
	$sfirst =~ s/-//g;
	$slast = substr($slast, 0, 4);	# make 4 characters long
	$sfirst = substr($sfirst, 0, 4);
	$sname = $slast.$sfirst;
	if ($yog > $date) {		# if not a pg 
		$yog = $yog - 1;	# then subtract 1 from yog
	}				# problem from rediker
	
	# generate random password
	$password = join ("", @chars[ map { rand @chars } ( 1 .. 10) ]);
	
	# concatonate the random characters
	
	print OUTPUT <<Commands;
/usr/sbin/useradd $sname -c "$Longname -- $yog"
/bin/echo "$first.$last:\\t\\t\\t$sname" >> /etc/aliases
/bin/echo "$sname\:$password\:\:\:\:\:" | newusers

Commands

$filename = "Explain/".$sname."\.lyx";

open (ACCOUNT, ">$filename");

	print ACCOUNT <<ExplainAccount;
#This file was created by <bill> Tue Sep  7 21:25:54 1999
#LyX 1.0 (C) 1995-1999 Matthias Ettrich and the LyX Team
\\lyxformat 2.15
\\textclass article
\\language default
\\inputencoding default
\\fontscheme default
\\graphics default
\\paperfontsize default
\\spacing single 
\\papersize a4paper
\\paperpackage a4
\\use_geometry 0
\\use_amsmath 0
\\paperorientation portrait
\\secnumdepth 3
\\tocdepth 3
\\paragraph_separation indent
\\defskip medskip
\\quotes_language english
\\quotes_times 2
\\papercolumns 1
\\papersides 1
\\paperpagestyle default

\\layout Title

$Longname
\\layout Author

Advisor: $Advisor
\\layout Description

Login: $sname
\\layout Description

e-mail: $first.$last\@tasis.ch
\\layout Description

SMTP-Server: mail.tasis.ch
\\layout Description

POP-Server: mail.tasis.ch
\\layout Description

IMAP-Server: mail.tasis.ch
\\layout Description

Password0: $password
\\layout Description

Password1: _____________________
\\layout Description

Password2: _____________________
\\layout Description

Password3: _____________________
\\layout Description

Password4: _____________________
\\layout Description

Password5: _____________________
\\layout Standard


\\emph on 
New passwords
\\emph default 
: 
\\layout Itemize

must not be in any dictionary.
\\layout Itemize

must be at least 10 characters long.
\\layout Itemize

must have at least 
\\series bold 
one
\\series default 
 symbol or number.
\\layout Itemize

should not be based on your birthday, address, etc.
 or those of your relatives.
\\the_end
ExplainAccount

close ACCOUNT;

	}
	
close OUTPUT;
close INPUT;

exit(0);