我正在尝试连接到串行端口(COM7),但似乎无法工作。也许我在设备中的描述有误。有人能帮我吗?
from __future__ import absolute_import, division, print_function
import netmiko
device = {
"device_type": "cisco_ios_serial",
"port": "COM7",
"username": "admin",
"password": "",
"secret": "secret"
}
conn = netmiko.ConnectHandler(**device)
conn.enable()
output = conn.send_config_set([
'no service dhcp',
'service dhcp',
'ip dhcp option format circuit_id',
'attr 3 type 0 length-hidden 6 value string 2412533'])
print(output)
conn.disconnect()下面是错误
Traceback (most recent call last):
File "test.py", line 12, in <module>
conn = netmiko.ConnectHandler(**device)
File "C:\Python\Python27\lib\site-packages\netmiko\ssh_dispatcher.py", line 173, in ConnectHandler
return ConnectionClass(*args, **kwargs)
File "C:\Python\Python27\lib\site-packages\netmiko\base_connection.py", line 117, in __init__
self.port = int(port)
ValueError: invalid literal for int() with base 10: 'COM7'发布于 2018-02-13 13:30:06
串行设置在设备定义的serial_settings中指定。
device = {
"device_type": "cisco_ios_serial",
"username": "admin",
"password": "",
"secret": "secret",
"serial_settings": {"port": "COM7"}
}我没有可用于测试的串行设备,但查找COM端口时出现错误。
ValueError: device COM7 not found.而不是期望一个整数。
netmiko源中的serial_settings的默认值为:
self.serial_settings = {
'port': 'COM1',
'baudrate': 9600,
'bytesize': serial.EIGHTBITS,
'parity': serial.PARITY_NONE,
'stopbits': serial.STOPBITS_ONE
}来自https://github.com/ktbyers/netmiko/blob/develop/netmiko/base_connection.py
发布于 2018-02-14 10:56:10
感谢您提出使用serial_settings的想法。然而,下面的serial_settings还有一些其他错误;仅供参考,我可以通过USB控制台访问COM7,但错误来了。
Traceback (most recent call last):
File "d:\Programming\GTAC\test_automation\test\robot_test\test.py", line 15, in <module>
conn = netmiko.ConnectHandler(**device)
File "C:\Python\Python27\lib\site-packages\netmiko\ssh_dispatcher.py", line 173, in ConnectHandler
return ConnectionClass(*args, **kwargs)
File "C:\Python\Python27\lib\site-packages\netmiko\base_connection.py", line 146, in __init__
comm_port = check_serial_port(comm_port)
File "C:\Python\Python27\lib\site-packages\netmiko\utilities.py", line 173, in check_serial_port
return cdc.split()[0]
AttributeError: 'ListPortInfo' object has no attribute 'split'发布于 2018-07-02 21:28:28
尝试拆分ListPortInfo对象的check_serial_port函数中存在错误。快速的解决方案是像这样的猴子补丁:
import netmiko
import serial.tools.list_ports
def my_check_serial_port(name):
"""returns valid COM Port."""
try:
cdc = next(serial.tools.list_ports.grep(name))
return cdc.__str__().split()[0]
except StopIteration:
msg = "device {} not found. ".format(name)
msg += "available devices are: "
ports = list(serial.tools.list_ports.comports())
for p in ports:
msg += "{},".format(str(p))
raise ValueError(msg)
netmiko.base_connection.check_serial_port = my_check_serial_porthttps://stackoverflow.com/questions/48759704
复制相似问题