公司的UTP 接入点远远多于接入层交换机的端口,而员工基于某种原因经常调整位置,而这就让我们不得不经常在交换机上换端口来满足他们的需求,而基于公司的policy,未使用的端口必须关闭。
这使得我必须清晰得了解各个端口的使用情况,我该如何做呢?
首先,我想要是可以在交换机上看到各个端口所连接主机的IP 就好了,不过大家知道,交换机是没这功能的,但是可以看到对端口对应的MAC地址,不过要是在该端口活动的情况下。单纯的用show mac add
虽然也可以看到结果,但是也会有许多不必要的信息,这里可以用管道命令(这个我找了好久才找到的!!)
show mac add | include Fa include是命令的关键次,而Fa 是你要在结果中筛选的关键词,它是要区分大小写的,字符嘛。
这就可以显示出端口与MAC 的关系。
而如何找到MAC 与IP ,主机名之间的关系呢?
首先想到的就是ARP协议,但是如何使用呢?我使用批处理搞定的。
原理是先用ping 命令ping 目的IP,让其在本机的缓存中有arp的记录,然后在用ARP命令显示出IP 与MAC的对应关系。(在用ARP之前若本机与目的主机之间无通信,将不会有该记录。)
将输出结果重定向到文本中,但是有个问题,bat中如何实现循环呢?(这里想到了C语言中的for 和变量,这个知识点给了我思路。)这就用来set 和 goto 语句。
cd \ set a=1 :begin ping *.*.*.%A% arp -a *.*.*.%A% |findstr "dynamic ARP" >> mac-ip.log set a=%a%+1 goto begin
这段命令只能找出同一网段的主机的MAC,若有多个网段,你知道该如何办了吧。
别看这一小段代码,我研究了好久呢,之前对DOS 很是不屑一顾,现在发现脚本是个好东西的时候又离不开它了,(不过我发现很多东西都是相通的,C语言真是个好东西,我是一直是它的忠实粉丝,因为它给了我很多计算机方面的思想,在我看来是网络管理员的三宝之一啊)。
以上这种方法基本是不会用到的,除非在没有DHCP的情况下。可是我们有啊,在几天之后我想到了这个问题,DHCP 直接就列出了IP 与MAC 的对应,而且可以导出列表,我当时那个郁闷啊!
主机名与IP 的对应我就捡便宜了,SEPM(Symantec Endpoint Protection Manager)上直接有.
获得了这些信息之后,就可把它们联系起来了,我是在excel中搞定这事的(不怕你笑话,这个我又搞了好久,都被同事鄙视了),主要用了text to columns(这个对知道的人来说不值一提)和VLOOKUP 函数。终于把二者联系起来了。