<p>在遵循@Sandeep的代码之后,我编辑了一些东西,最终实现了主要目标</p>
<p>最后的工作代码在这里</p>
<pre><code>import time
import concurrent.futures
from netmiko import ConnectHandler
hosts_info = []
starting_time = time.perf_counter()
with open('routers.txt', 'r') as devices:
for line in devices:
deviceip = line.strip()
host = {
'device_type': 'cisco_ios',
'ip': deviceip,
'username': 'cisco',
'password': 'cisco',
'secret': 'cisco'
}
hosts_info.append(host)
def open_connection(host):
try:
connection = ConnectHandler(**host)
print('Connection Established to Host:', host['ip'])
connection.enable()
sendcommand = connection.send_command('sh run | i hostname')
return sendcommand + ' ' + 'For Device:' + host['ip']
except:
print('Connection Failed to host', host['ip'])
if __name__ == '__main__':
with concurrent.futures.ProcessPoolExecutor() as executor:
results = executor.map(open_connection, hosts_info)
for result in results:
print(result)
finish = time.perf_counter()
print('Time Elapsed:', finish - starting_time)
</code></pre>
<p>输出:</p>
<pre><code>Connection Established to Host: 10.10.32.2
Connection Established to Host: 10.10.32.4
Connection Established to Host: 10.10.32.5
Connection Established to Host: 10.10.32.3
hostname R1 For Device:10.10.32.2
hostname R2 For Device:10.10.32.3
hostname R4 For Device:10.10.32.4
hostname R3 For Device:10.10.32.5
Time Elapsed: 7.035125793000589
</code></pre>
<p>请注意,ip在引号中应为“ip”。
产量并不是那么高,但现在就可以了。
多谢各位</p>