Netmiko库返回模式从未在send_command_expect中检测到



我正在担任网络工程师,我试图使用一些Python脚本自动化例程任务。我们正在使用思科,所以我认为实现Netmiko库会很不错。这是用于连接设备和编辑访问列表的脚本的一部分:

def Connection (DevParameters, device, HostAddress):
    try:
        net_connect = ConnectHandler(**DevParameters)
    except:
        print device[0] + ': Authentication failed or device unavailable'
        return
    access_class = net_connect.send_command("sh run | inc access-class")
    if access_class == '':
        print device[0] + ': No access-class configured.' 
        net_connect.disconnect()
        return
    access_class = access_class.splitlines()[0].split(' ')[-2]
    acl_type = net_connect.send_command("sh ip access-list " + access_class).splitlines()[0].split(' ')[0].lower()
    net_connect.send_command('configure terminal')
    net_connect.send_command('ip access-list ' + acl_type + access_class)
    if acl_type == 'extended':
        net_connect.send_command('permit tcp host' + HostAddress + ' any eq 22')
    elif acl_type == 'standard':
        net_connect.send_command('permit ' + HostAddress )
    else:
        print device[0] + ': Unexpected ACL type. Connection closed.'
       net_connect.disconnect()
        return
    print device[0] + ': Configured.'
    net_connect.disconnect
    return

它从划分的空闲写作命令行中很好地工作,但是当执行脚本时,它会失败:

Traceback (most recent call last):
  File "C:UsersUserDesktopMAT.py", line 145, in <module>
    Connection (DevParameters, device, HostAddress)
  File "C:UsersUserDesktopMAT.py", line 90, in Connection
    net_connect.send_command('configure terminal')
  File "C:Program FilesPython27libsite-packagesnetmikobase_connection.py", line 827, in send_command
    search_pattern))
IOError: Search pattern never detected in send_command_expect: HQ_F3_2960_D-5#

我尝试在send_command()之后实现sheet(),但无济于事。有什么问题?

我也有类似的问题,但是我用set length 0.解决了它我分享我的代码,希望为您提供帮助。

extrm_X460 = {
    'device_type': 'extreme',
    'ip':   ip,
    'username': 'username',
    'password': 'password',
    'port' : 22,          
}
try:
    # Connect
    print "Trying to connect to: " + ip
    net_connect = ConnectHandler(**extrm_X460)
    # Get info
    print "Connected to: " + ip
    net_connect.send_command('set length 0')
    output = net_connect.send_command('show mac port ge.*.*')
    print output
except (IOError, EOFError, SSHException, NetMikoTimeoutException, NetMikoAuthenticationException) as e:
    print e
    continue

使用send_command_timing代替send_command。

  • send_command正在检测设备提示(基于模式)(它将与" show"'命令一起使用。
  • send_command_timing是基于延迟的,并且不寻找设备提示(将在配置模式[conf t]中使用)

示例:net_connect.send_command_timing

最新更新