Python 使用Paramiko+读取远程配置;顺反式沥青

Python 使用Paramiko+读取远程配置;顺反式沥青,python,paramiko,Python,Paramiko,我有一个脚本,它通过api连接到IPAM工具,获取新创建的vlan,然后通过paramiko在远程rancid服务器上执行“设备q{vlan}”。从这里我得到了一个VLAN所在设备的字典 函数在这里 def check_rancid_for_vlan(): vlans = get_vlans() client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.co

我有一个脚本,它通过api连接到IPAM工具,获取新创建的vlan,然后通过paramiko在远程rancid服务器上执行“设备q{vlan}”。从这里我得到了一个VLAN所在设备的字典

函数在这里

def check_rancid_for_vlan():
vlans = get_vlans()

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(rancid_host, username=username, password=password)

results = {}
for i in vlans:
    stdin, stdout, stderr = client.exec_command('cd /var/home/configs; device q Vlan{}'.format(i))

    for line in stdout:
        if "no" not in line:
            device = line.split(":")[0]
            if i in results:
                results[device].append(i)
            else:
                results[device] = [i]

for key, val in results.iteritems():
    for i in val:
        print(key,i)

client.close()
这将输出

(u'switch1', 1001)
(u'switch2', 1002)
(u'switch3', 1003)
(u'switch4', 1004)
我想在每个配置中搜索vlan并打印它。CiscoConfParse允许搜索具有

parse.find_objects_w_child(r"interface", vlan)

但有没有办法通过帕拉米科远程实现这一点?或者一个更好的解决方案?

解决方案是将配置目录从远程复制到本地,并在那里执行解析(1)完整的配置是什么样子的?显然,你打印的不是你想要搜索的全部信息。(2) 您是否考虑过查看CiscoConfParse的源代码以获取见解?