#!/usr/local/bin/perl -w use strict; ## Scott Wiersdorf ## Created: Fri Jun 7 17:55:34 MDT 2002 ## $Id: bulkload.pl,v 1.1 2005/08/15 18:25:30 scott Exp $ use vars qw($VERSION); $VERSION = '1.05'; use Getopt::Std; use vars qw($opt_v); getopts('v'); die "This is bulkload.pl version $VERSION\n" if $opt_v; use VPS::Passwd; use VPS::Privs; ## defaults my $uid = $<; my $gid = 100; my $vpriv = new VPS::Privs; open BL, "./bulkload.txt" or die "Can't open bulkload.txt: $!\n"; while( ) { next if /^\#/; ## skip comments next if /^\s*$/; ## skip whitespace chomp; my( $login, $passwd1, $full_name, $services, $home_opt) = split /\t/; next if $login =~ /^\s*\#/; my $home = ( $home_opt ? $home_opt : "/usr/home/$login" ); ## check for existing account my $pw = getpwnam($login); if( $pw && $pw->name ) { warn "$login already has an account\n"; next; } my $crypt = crypt( $passwd1, join('', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]) ); my $str = "$login:$crypt:$uid:$gid:$full_name:$home:noshell"; $pw = addpwent($str); unless( $pw->as_string eq $str ) { warn "Could not write passwd file entry for $login\n"; next; } ## write vpriv info my(@services) = split /:/, $services; for my $vp ( @services ) { my ($srv,$quota) = split /,/, $vp; $quota = ( defined $quota ? $quota : 0 ); $vpriv->set_service( $login, $srv, $quota ); } print "$login successfully added\n"; } $vpriv->flush; close BL; exit;