首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用netmiko连接串口?

如何使用netmiko连接串口?
EN

Stack Overflow用户
提问于 2018-02-13 12:55:15
回答 3查看 2.9K关注 0票数 0

我正在尝试连接到串行端口(COM7),但似乎无法工作。也许我在设备中的描述有误。有人能帮我吗?

代码语言:javascript
复制
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()

下面是错误

代码语言:javascript
复制
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'
EN

回答 3

Stack Overflow用户

发布于 2018-02-13 13:30:06

串行设置在设备定义的serial_settings中指定。

代码语言:javascript
复制
device = {
"device_type": "cisco_ios_serial",
"username": "admin",
"password": "",
"secret": "secret",
"serial_settings": {"port": "COM7"}
}

我没有可用于测试的串行设备,但查找COM端口时出现错误。

代码语言:javascript
复制
ValueError: device COM7 not found.

而不是期望一个整数。

netmiko源中的serial_settings的默认值为:

代码语言:javascript
复制
    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
EN

Stack Overflow用户

发布于 2018-02-14 10:56:10

感谢您提出使用serial_settings的想法。然而,下面的serial_settings还有一些其他错误;仅供参考,我可以通过USB控制台访问COM7,但错误来了。

代码语言:javascript
复制
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'
票数 0
EN

Stack Overflow用户

发布于 2018-07-02 21:28:28

尝试拆分ListPortInfo对象的check_serial_port函数中存在错误。快速的解决方案是像这样的猴子补丁:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48759704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档