perl脚本之------向/etc/aliases邮件组添加删除用户

  下面三脚本是向/etc/aliases中已建立的邮件组中添加或删除用户之用

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");



2,从邮件组中删除指定用户,并从系统中删除指定用户

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");





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");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值