Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48403
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 72
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-22 16:36
个人简介

地方

文章分类

全部博文(51)

文章存档

2013年(51)

我的朋友

分类: LINUX

2013-04-22 16:40:51

原文地址:今天用perl很爽 作者:huifeideluotuo

是这样的,最近公司网络进行改造,要求实现IP和MAC地址的绑定,交换机下的每一个端口对应一个vlan号,这样来实现办公网和开发网的访问权限控制,每一个信息点在交换机上都是逻辑相对应的,这样以后不用去插拔网线,如果员工需要调动,只需要将该端口加入其它vlan即可,这样就需要将信息点的数字转换成交换机上的端口号进行对应。

举个例子,有一个员工对应的信息点是16,那么他的这个信息点在机柜交换机上对应的是1号交换的16端口,那么46这个信息点对应的是2号交换机的22端口。

网络维护人员已经将信息点和内网、外网的对应关系收集起来,我这边需要做的就是在2层交换机上进行端口加入vlan的操作,刚开始比较笨,一个一个计算信息点和交换机上的对应关系,搞了半个小时,比较麻烦,还搞错几个(口算不好),说不定还有漏网之鱼。

想想是不是可以通过程序来解决,于是就用perl写个简单的判断,这样我就直接在交换机vlan上添加端口就可以了,岂不是很方便,脚本如下:


#!/usr/bin/perl -w
use strict;

my $filename = '/opt/test';

open FH, "< $filename" or die "can't open $filename  ..... ($!)";

foreach my $sit () {
    chomp $sit;
    
    if ( $sit >= 1 and $sit <= 24) {
        my $switch = 1;
        my $port = $sit;
        print "$sit\t", "$switch\t", "$port", "\n";
    }

    elsif ( $sit >24  and $sit <= 48) {
        my $switch = 2;
        my $port = $sit - 24;
        print "$sit\t", "$switch\t", "$port", "\n";
    }

        elsif ( $sit >48  and $sit <= 72) {
        my $switch = 3;
        my $port = $sit - 48;
        print "$sit\t", "$switch\t", "$port", "\n";
    }

    elsif ( $sit >72  and $sit <= 96) {
        my $switch = 4;
        my $port = $sit - 72;
        print "$sit\t", "$switch\t", "$port", "\n";
    }

    elsif ( $sit >96  and $sit <= 120) {
        my $switch = 5;
        my $port = $sit - 96;
        print "$sit\t", "$switch\t", "$port", "\n";
    }
}


[root@localhost opt]# more test
40 (信息点)
59
69
43
9

执行结果,还有排序:
[root@localhost opt]# ./port.pl | sort -n
1       1(交换机)        1
22      1                22(端口号)
23      1                23
28      2                4
29      2                5


呵呵,这样一目了然,仅仅需要在对应的vlan上交换机上添加端口就ok了,先将配置写到文件,然后在交换机上粘贴,直接批量执行,还不会出错,活学活用很重要哦,大大减少了工作量。
阅读(105) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~