for ipaddr,ntos,name,pswd,epswd in ip_list: session = ConnectHandler(device_type=ntos, ip=ipaddr, username=name, password=pswd, secret=epswd, port = 22, verbose = True, banner_timeout=300) print("connecting to "+ ipaddr + ntos + name + pswd) print("---- Getting configuration from {}-----------".format(ipaddr)) if ntos == 'huawei': config_data = session.send_command('dis ip int brief ') print (config_data) elif ntos == 'cisco_ios': session.enable() config_data = session.send_command("show vlan") #抓取配置引入config print(config_data) #回显内容,类似登录设备show run else: print("Unsupported OS: " + ntos) continue session.disconnect() return config_data config_data = session.send_command如何执行多条命令,例如display version display cpu-usage display memory-usage这三条命令,然后retun config_data,并且在循环中retun不会中断循环
时间: 2023-12-12 14:02:01 浏览: 278
你可以使用`send_command()`方法来执行多条命令,或者使用`send_command_timing()`方法来逐行输入命令。这里有两种方法可以实现你的需求:
方法一:使用`send_command()`方法
你可以将多个命令组成一个字符串,然后一次性执行它们。在华为设备上,需要使用管道符号“|”将多个命令连接起来:
```python
command = 'display version | display cpu-usage | display memory-usage'
config_data = session.send_command(command)
```
在思科设备上,可以使用分号“;”将多个命令连接起来:
```python
command = 'show version ; show processes cpu sorted ; show memory statistics'
config_data = session.send_command(command)
```
方法二:使用`send_command_timing()`方法
你可以遍历命令列表,逐个输入并执行命令,然后将输出保存到一个字符串中:
```python
commands = ['display version', 'display cpu-usage', 'display memory-usage']
config_data = ''
for cmd in commands:
output = session.send_command_timing(cmd)
config_data += output + '\n'
return config_data
```
这种方法适用于在执行命令时需要等待一些时间的情况,例如需要输入密码或确认信息等。
阅读全文