使用python通过ip或mac进行思科交换机端口映射

使用python通过ip或mac进行思科交换机端口映射

我正在处理一些与网络相关的工作。这是我创建的代码,用于在数据中心查找与思科交换机连接的服务器。但我们有多种思科操作系统类型。如 Cisco ios 和 NXOS。登录到每个设备以获取邻居信息或 mac 表是实现此目的的更好方法。伙计们,还有其他方法可以从 ip 或 mac 获取思科交换机端口映射吗?

import paramiko
import time
import sys
import os
import json
import re



app_server_mgmt_ip = '192.168.10.20'
app_switch_mgmt_ip = '192.168.20.5'
username = ''
password = ''
ip = app_switch_mgmt_ip


from netmiko import ConnectHandler

cisco_ios_xrv = {
    'device_type': 'cisco_xr',
    'ip':   app_switch_mgmt_ip,
    'username': username,
    'password': password,
    'port' : 22,          # optional, defaults to 22
    'secret': 'secret',     # optional, defaults to ''
    'verbose': False,       # optional, defaults to False
}
net_connect = ConnectHandler(**cisco_ios_xrv)
output = net_connect.send_command('sh ver')
datai222 = str(output)
print datai222

output = net_connect.send_command('sh ip route '+app_server_mgmt_ip)
data = str(output)
displaymessage1 = data
#print displaymessage1

output2 = net_connect.send_command('sh ip arp '+app_server_mgmt_ip)
data2 = str(output2)
##print data2
stringsplit2 = data2.split()
#print stringsplit2
stringsplit2value = stringsplit2[11].strip()
displaymessage2 = data2
#print displaymessage2

#third command
output3 = net_connect.send_command('ping '+app_server_mgmt_ip)
data3 = str(output3)
displaymessage3 = data3
#print displaymessage3
import time
#time.sleep(1)
#print "4th command"
#print "stringsplit2value"+stringsplit2value
output4 = net_connect.send_command('sh mac address-table address '+stringsplit2value)
#output4 = net_connect.send_command('sh mac address-table address '+stringsplit2value)
data4 = str(output4)
displaymessage4 = data4
#print displaymessage4
stringsplit4 = data4.split('\n')
##print stringsplit4
stringfound4 = str(stringsplit4[7]).find('Po')
#print stringfound4
if(stringfound4  == -1):
        print("Not found")
else:
        stringsplit4split = stringsplit4[7].split('Po')
        stringsplit4splitvalue4 = stringsplit4split[1].strip()

答案1

看起来您使用了正确的命令,但您可能有一些错误的假设。

可以使用以下方法找到交换机上连接服务器的端口:显示 MAC 地址表但仅当交换机最近获知此 mac 地址时才如此。交换机需要为该服务器转发第 2 层流量时,才会获知 mac 地址。

找到的端口可以是服务器直接连接的端口,也可以是另一个交换机连接的端口(如果该交换机位于通向服务器的路径上)。

交换机通常不知道服务器的 IP 地址。当您 ping 服务器的 IP 地址时,您可能正在使用管理网络。由于这通常是不同的网络,因此 ARP 表将显示服务器 IP 的网关 MAC 地址,而不是服务器 MAC 地址。

要找到服务器连接的端口,最好的选择是进入充当该服务器网关的设备。在该设备上,ping 服务器并检查 ARP 表中的 MAC 地址。然后,检查转发表以查看用于转发该 MAC 流量的端口。该端口要么是下行链路,您必须再次检查连接在那里的交换机,要么它就是您要查找的端口。

相关内容