博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

系统※网络技术实验室

System & Databses & Networking & Security & Services
evegl.cublog.cn
附加的vip用户的编辑脚本。0806更新

#!/usr/bin/perl
use strict;
use Cwd;
use POSIX qw(strftime);

my $config_dir = "etc";
my $vip_dbm = 'vip.dbm';
my $conns_500_dbm="conns_500.dbm";
my ($ip,$username,%vips,%conns_500);
my $time = strftime "%Y-%m-%d %H:%M:%S",localtime;
chdir ($config_dir) || die "Cannot open $config_dir: $!";
dbmopen(%vips,$vip_dbm,0644) || die  "Cannot open DBM $vip_dbm:$!";
dbmopen(%conns_500,"$conns_500_dbm",0644) || die  "Cannot open DBM $conns_500_dbm:$!";

sub useradd {
        my ($_ip,$_username) = @_;
        if ( not defined $vips{$_ip} ) {
                if ( $_ip =~ /^192\.168\.\d+\.\d+$/ ) {
                        if ( length($_username) > 0 ) {
                                $vips{$_ip} = ucfirst($_username)."\t\t\t| $time";
                                testuser($_ip);
                        }else{
                                $vips{$_ip} = "VIP\t\t\t| $time";
                                testuser($_ip);
                        }
                }elsif ( $_ip =~ /^(192\.168\.\d+\.)\*$/) {
                                if (length($username) > 0) {
                                        #print length($_ip),"\n",length($_username),"\n";
                                        for ( my $i=0; $i<256; $i++ ) {
                                                $_ip = $1.$i;
                                                if (not defined $vips{$_ip}){
                                                        $vips{$_ip} = ucfirst($_username)."\t\t\t| $time";
                                                        testuser($_ip);
                                                }else{
                                                        print "\nThe $_ip was VIP!\n";
                                                }

                                        }
                                }else{
                                        print "\nError : Please Enter Username !\n";
                                }
                }else{
                        print "\nEnter IP $_ip Syntax is Error , or The Ip Address was Vip!\n";
                }
        }else{
                print "\nThe $_ip was VIP!\n";
        }
}

sub testuser {
        my $_ip = shift;
        if (defined $vips{$_ip}) {
                print "\n$_ip - $vips{$_ip} Create Successfuly!\n";
                if ( defined($conns_500{$_ip} )) {
                        delete $conns_500{$_ip};
                }
        }else{
                print "\n$_ip - VIP Create Failed!\n";
        }
}

SWITCH: {
        print "\nSelect:{show|grep|add|del|quit}:";
        while (<>) {
                chomp($_);
                if (/^add$/) {
                        print "Enter VIP's IP Address[192.168.*.*]:";
                        chomp($ip = <STDIN>);
                        if (defined $vips{$ip}){
                                print "\nThe $ip was VIP!\n";
                                redo SWITCH;
                        }
                        print "Enter The vip's Username:";
                        chomp($username = <STDIN>);
                        useradd($ip,$username);
                        redo SWITCH;
                }
                if (/^show$/) {
                        foreach my $keys (sort {"\L$a" cmp "\L$b" } keys %vips) {
                                my $values = $vips{$keys};
                                print "The $keys is $values\n";
                        }
                        redo SWITCH;
                }
                if (/^grep$/) {
                        print "Enter Find vip's ip address[192.168.*.*]:";
                        chomp($ip = <STDIN>);
                        if (( $ip =~ m/^192\.168\.\d+\.\d+$/ ) && (defined $vips{$ip}) ) {
                                print "\nThe $ip is $vips{$ip}!\n";
                        }else{
                                print "\nThe $ip is not VIP , or IP Address Syntax is Error!\n";
                        }
                        redo SWITCH;
                }
                if (/^del$/) {
                        print "Enter del vip's ip address[192.168.*.*]:";
                        chomp($ip = <STDIN>);
                        if ( ( $ip =~ m/^192\.168\.\d+\.\d+$/ ) && (defined $vips{$ip}) ) {
                                delete $vips{$ip};
                                if ((!defined $vips{$ip})) {
                                        print "\n$ip - Vip Delete Successfuly!\n";
                                }else{
                                        print "\n$ip - Vip Delete Failed!\n";
                                }
                        }elsif ( $ip =~ m/^(192\.168\.\d+\.)\*$/ ) {
                                print "Please Enter the same username:";
                                chomp(my $username = <STDIN>);
                                for ( my $i=0; $i<256; $i++ ) {
                                        $ip = $1.$i;
                                        if ( (defined $vips{$ip}) and ($vips{$ip} =~ /^$username\s+.*$/i )) {
                                                delete $vips{$ip};
                                                print "\n$ip - Vip Delete Successfuly!\n";
                                        }
                                }
                        }else{
                                print "\nThe $ip is not VIP , or IP Address Syntax is Error!\n";
                        }
                        redo SWITCH;
                }
                if (/^quit|^q$/) {
                        dbmclose(%vips);
                        dbmclose(%conns_500);
                        exit 0;
                }
                if (/.*/) {
                        redo SWITCH;
                }
        }
}

发表于: 2008-08-06,修改于: 2008-08-06 18:10,已浏览521次,有评论0条 推荐 投诉

给我留言
版权所有 ChinaUnix.net 页面生成时间:0.02884