探討交換機(jī)端口的另外一端
公司的UTP接入點(diǎn)遠(yuǎn)遠(yuǎn)多于接入層交換機(jī)的端口,而員工基于某種原因經(jīng)常調(diào)整位置,而這就讓我們不得不經(jīng)常在交換機(jī)上換端口來滿足他們的需求,而基于公司的policy未使用的端口必須關(guān)閉。
這使得我必須清晰得了解各個端口的使用情況,我該如何做呢?
首先,我想要是可以在交換機(jī)上看到各個端口所連接主機(jī)的IP就好了,不過大家知道,交換機(jī)是沒這功能的,但是可以看到對端口對應(yīng)的MAC地址,不過要是在該端口活動的情況下。單純的用show mac add雖然也可以看到結(jié)果,但是也會有許多不必要的信息,這里可以用管道命令(這個我找了好久才找到的!!)
show mac add | include Fa include是命令的關(guān)鍵次,而Fa是你要在結(jié)果中篩選的關(guān)鍵詞,它是要區(qū)分大小寫的,字符嘛。
這就可以顯示出端口與MAC的關(guān)系。
而如何找到MAC與IP,主機(jī)名之間的關(guān)系呢?
首先想到的就是ARP協(xié)議,但是如何使用呢?我使用批處理搞定的。
原理是先用ping 命令ping 目的IP,讓其在本機(jī)的緩存中有arp的記錄,然后在用ARP命令顯示出IP 與MAC的對應(yīng)關(guān)系。(在用ARP之前若本機(jī)與目的主機(jī)之間無通信,將不會有該記錄。)
將輸出結(jié)果重定向到文本中,但是有個問題,bat中如何實(shí)現(xiàn)循環(huán)呢?(這里想到了C語言中的for 和變量,這個知識點(diǎn)給了我思路。)這就用來set 和 goto 語句。
cd \ set a=1 :begin ping *.*.*.%A% arp -a *.*.*.%A% |findstr "dynamic ARP" >> mac-ip.log set a=%a%+1 goto begin
這段命令只能找出同一網(wǎng)段的主機(jī)的MAC,若有多個網(wǎng)段,你知道該如何辦了吧。
別看這一小段代碼,我研究了好久呢,之前對DOS很是不屑一顧,現(xiàn)在發(fā)現(xiàn)腳本是個好東西的時候又離不開它了,(不過我發(fā)現(xiàn)很多東西都是相通的,C語言真是個好東西,我是一直是它的忠實(shí)粉絲,因?yàn)樗o了我很多計算機(jī)方面的思想,在我看來是網(wǎng)絡(luò)管理員的三寶之一啊)。
以上這種方法基本是不會用到的,除非在沒有DHCP的情況下??墒俏覀冇邪。趲滋熘笪蚁氲搅诉@個問題,DHCP直接就列出了IP與MAC的對應(yīng),而且可以導(dǎo)出列表,我當(dāng)時那個郁悶啊!
主機(jī)名與IP 的對應(yīng)我就撿便宜了,SEPM(Symantec Endpoint Protection Manager)上直接有.
獲得了這些信息之后,就可把它們聯(lián)系起來了,我是在excel中搞定這事的(不怕你笑話,這個我又搞了好久,都被同事鄙視了),主要用了text to columns(這個對知道的人來說不值一提)和VLOOKUP 函數(shù)。終于把二者聯(lián)系起來了。