下面三脚本是向/etc/aliases中已建立的邮件组中添加或删除用户之用
1,向邮件组中添加用户:
CODE:
2,从邮件组中删除指定用户,并从系统中删除指定用户
CODE:
3,从指定邮件组中删除指定用户,但是不从系统中删除用户
CODE:
1,向邮件组中添加用户:
CODE:
#!/usr/bin/perl -w
#name:aliases-add-user.pl
#
use strict;
my $id=shift;
my $group=shift;
my $dir="/etc";
my $file=" aliases";
my $all="all";
my @groups=split(/,/,$group);
my $group_tmp=join(" ",@groups);
push @groups,$all if($group_tmp !~ $all);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$mon=$mon+1;
$mon='0'.$mon if($mon<10);
$year=$year+1900;
$mday='0'.$mday if($mday<10);
my $ext=$year.$mon.$mday;
if(-f "$dir//$file/.$ext"){
system("rm -f $dir//$file/.$ext");
system("mv $dir//$file $dir//$file/.$ext");
}else{
system("mv $dir//$file $dir//$file/.$ext");
}
my $bak_file="$file/.$ext";
open(FILE,"$dir//$bak_file") or die "connot open $!";
my @aliases=<FILE>;
foreach my $line(@groups){
for(my $i=0;$i<@aliases;$i++){
if($aliases[$i]=~/^$line:/){
chomp($aliases[$i]);
$aliases[$i]="$aliases[$i]".",$id"."/n" ;
}
}
}
foreach my $str(@aliases){
open FH,">>$dir//$file" or die $!."/n";
print FH $str;
close(FH);
}
close(FILE);
system("/usr/bin/newaliases");
#name:aliases-add-user.pl
#
use strict;
my $id=shift;
my $group=shift;
my $dir="/etc";
my $file=" aliases";
my $all="all";
my @groups=split(/,/,$group);
my $group_tmp=join(" ",@groups);
push @groups,$all if($group_tmp !~ $all);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$mon=$mon+1;
$mon='0'.$mon if($mon<10);
$year=$year+1900;
$mday='0'.$mday if($mday<10);
my $ext=$year.$mon.$mday;
if(-f "$dir//$file/.$ext"){
system("rm -f $dir//$file/.$ext");
system("mv $dir//$file $dir//$file/.$ext");
}else{
system("mv $dir//$file $dir//$file/.$ext");
}
my $bak_file="$file/.$ext";
open(FILE,"$dir//$bak_file") or die "connot open $!";
my @aliases=<FILE>;
foreach my $line(@groups){
for(my $i=0;$i<@aliases;$i++){
if($aliases[$i]=~/^$line:/){
chomp($aliases[$i]);
$aliases[$i]="$aliases[$i]".",$id"."/n" ;
}
}
}
foreach my $str(@aliases){
open FH,">>$dir//$file" or die $!."/n";
print FH $str;
close(FH);
}
close(FILE);
system("/usr/bin/newaliases");
CODE:
#!/usr/bin/perl -w
#name:aliases-del-user.pl
use strict;
my $id=shift;
my $dir="/etc";
my $file="aliases";
exit if($id eq "root");
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$mon=$mon+1;
$mon='0'.$mon if($mon<10);
$year=$year+1900;
$mday='0'.$mday if($mday<10);
my $ext=$year.$mon.$mday;
system("/usr/sbin/userdel $id");
if(-f "$dir//$file/.$ext"){
system("rm -f $dir//$file/.$ext");
system("mv $dir//$file $dir//$file/.$ext");
}else{
system("mv $dir//$file $dir//$file/.$ext");
}
my $bak_file="$file/.$ext";
open(FILE,"$dir//$bak_file") or die "$!/n";
my @aliases=<FILE>;
foreach my $line(@aliases){
if($line=~//b$id/b/){
$line=~ s//b$id/b//g;
}
if($line =~ //w,+/w/){
$line=~s/,+/,/g;
}
if($line =~ /,$/){
$line=~s/,+$//;
}
}
foreach my $str(@aliases){
open FH,">>$dir//$file" or die $!."/n";
print FH $str;
close(FH);
}
close(FILE);
system("/usr/bin/newaliases");
#name:aliases-del-user.pl
use strict;
my $id=shift;
my $dir="/etc";
my $file="aliases";
exit if($id eq "root");
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$mon=$mon+1;
$mon='0'.$mon if($mon<10);
$year=$year+1900;
$mday='0'.$mday if($mday<10);
my $ext=$year.$mon.$mday;
system("/usr/sbin/userdel $id");
if(-f "$dir//$file/.$ext"){
system("rm -f $dir//$file/.$ext");
system("mv $dir//$file $dir//$file/.$ext");
}else{
system("mv $dir//$file $dir//$file/.$ext");
}
my $bak_file="$file/.$ext";
open(FILE,"$dir//$bak_file") or die "$!/n";
my @aliases=<FILE>;
foreach my $line(@aliases){
if($line=~//b$id/b/){
$line=~ s//b$id/b//g;
}
if($line =~ //w,+/w/){
$line=~s/,+/,/g;
}
if($line =~ /,$/){
$line=~s/,+$//;
}
}
foreach my $str(@aliases){
open FH,">>$dir//$file" or die $!."/n";
print FH $str;
close(FH);
}
close(FILE);
system("/usr/bin/newaliases");
3,从指定邮件组中删除指定用户,但是不从系统中删除用户
CODE:
#!/usr/bin/perl -w
#name:aliases-del-fromgroup.pl
use strict;
my $id=shift;
my $group=shift;
my $dir="/etc";
my $file="aliases";
exit if($id eq "root");
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$mon=$mon+1;
$mon='0'.$mon if($mon<10);
$year=$year+1900;
$mday='0'.$mday if($mday<10);
my $ext=$year.$mon.$mday;
if(-f "$dir//$file/.$ext"){
system("rm -f $dir//$file/.$ext");
system("mv $dir//$file $dir//$file/.$ext");
}else{
system("mv $dir//$file $dir//$file/.$ext");
}
my $bak_file="$file/.$ext";
open(FILE,"$dir//$bak_file") or die "$!/n";
my @aliases=<FILE>;
foreach my $line(@aliases){
if($line=~/^$group:/){
$line=~ s//b$id/b//g;
}
if($line =~ //w,+/w/){
$line=~s/,+/,/g;
}
if($line =~ /,$/){
$line=~s/,+$//;
}
}
foreach my $str(@aliases){
open FH,">>$dir//$file" or die $!."/n";
print FH $str;
close(FH);
}
close(FILE);
system("/usr/bin/newaliases");
#name:aliases-del-fromgroup.pl
use strict;
my $id=shift;
my $group=shift;
my $dir="/etc";
my $file="aliases";
exit if($id eq "root");
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$mon=$mon+1;
$mon='0'.$mon if($mon<10);
$year=$year+1900;
$mday='0'.$mday if($mday<10);
my $ext=$year.$mon.$mday;
if(-f "$dir//$file/.$ext"){
system("rm -f $dir//$file/.$ext");
system("mv $dir//$file $dir//$file/.$ext");
}else{
system("mv $dir//$file $dir//$file/.$ext");
}
my $bak_file="$file/.$ext";
open(FILE,"$dir//$bak_file") or die "$!/n";
my @aliases=<FILE>;
foreach my $line(@aliases){
if($line=~/^$group:/){
$line=~ s//b$id/b//g;
}
if($line =~ //w,+/w/){
$line=~s/,+/,/g;
}
if($line =~ /,$/){
$line=~s/,+$//;
}
}
foreach my $str(@aliases){
open FH,">>$dir//$file" or die $!."/n";
print FH $str;
close(FH);
}
close(FILE);
system("/usr/bin/newaliases");