我正在尝试连接到串口(COM7),但似乎无法正常工作。 也许我在设备中做了错误的描述。 有人可以帮帮我吗?
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'
这是错误
{{1}}
答案 0 :(得分:0)
串行设置在设备定义的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
答案 1 :(得分:0)
感谢您使用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'
答案 2 :(得分:0)
check_serial_port函数中存在一个错误,该错误试图拆分ListPortInfo对象。 快速解决方案是像这样的猴子补丁:
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_port