无法使用NETMIKO在路由器上建立ssh连接

2024-06-07 12:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试开发一个python脚本,该脚本使用netmiko(ConnectHandler())通过另一个路由器连接到cisco路由器。ssh到R1,然后从R1到R2

我建立了到R1的第一个连接,我使用Netmiko通过ssh连接到路由器R2,但我无法建立cnx。 这是词典创建过程

def sh_route(self,alias):
    global verif
    self.device = self._cache.switch(alias)
    device_info = {
                'device_type': 'cisco_ios',
                'ip': self.device.hostname,
                'username': self.device.username,
                'password': self.device.password,}

使用ConnectHandler和创建的字典连接到R1

#connect to device1 from linux
    net_connect = ConnectHandler(**device_info)
    ldp= self.get_ldp_neighbors(alias)
    for  x in ldp.keys():
        addr_list = ldp[x]['addresses'] #List of ldp ip adresses  
        
        src_ip_addr= ldp[x]['SrcIPaddr'] #source ip addr

使用write\u channel()函数编写ssh'src\u ip\u addr'(src\u ip\u addr是我要ssh的地址)

            net_connect.write_channel('ssh'+src_ip_addr+'\n')
        time.sleep(1)
        output = net_connect.read_channel()

对上述用户名和密码处理使用循环 密码似乎未写入,因此cnx失败

        i = 1
        while i <= 20:
            try:   
                if 'Username' in output:
                    net_connect.write_channel(net_connect.username + '\r\n')
                    time.sleep(1)
                    output = net_connect.read_channel()
                if 'password' in output:
                    net_connect.write_channel(net_connect.password + '\n')
                    time.sleep(1)
                    output = net_connect.read_channel()
                i += 1
            except EOFError:
                pass
            print(output=

验证cnx是否已建立

print ("SSH prompt: {}".format(net_connect.find_prompt()))

然后使用分派功能并将命令发送到目标路由器R2

redispatch(net_connect, device_type='cisco_ios')
    net_connect.enable()
    new_output = net_connect.send_command('show version', use_textfsm=True)

然后我尝试运行命令sh ip route connected和sh route local

        version= new_output[0]['rommon']
    if  version == 'IOS-XE':
        new_output = net_connect.send_command('show ip route connected')
        return new_output
    if  version == 'IOS-XR':
        new_output = net_connect.send_command('show route local')
        return new_output

问题出在用户名和密码处理部分

这是终端上的输出

ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
ssh 192.168.247.2
Password: 
SSH prompt: Password:

这是完整的日志:

这是日志

DEBUG:paramiko.transport:starting thread (client mode): 0x31b464e0 DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_2.7.2 DEBUG:paramiko.transport:Remote version/idstring: SSH-2.0-Cisco-1.25 INFO:paramiko.transport:Connected (version 2.0, client Cisco-1.25) DEBUG:paramiko.transport:kex algos:['ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp521', 'diffie-hellman-group14-sha1'] server key:['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa'] client encrypt:['aes128-gcm', 'aes256-gcm', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] server encrypt:['aes128-gcm', 'aes256-gcm', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] client mac:['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256', 'hmac-sha2-512'] server mac:['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256', 'hmac-sha2-512'] client compress:['none'] server compress:['none'] client lang:[''] server lang:[''] kex follows?False DEBUG:paramiko.transport:Kex agreed: ecdh-sha2-nistp256 DEBUG:paramiko.transport:HostKey agreed: ssh-rsa DEBUG:paramiko.transport:Cipher agreed: aes128-ctr DEBUG:paramiko.transport:MAC agreed: hmac-sha2-256 DEBUG:paramiko.transport:Compression agreed: none DEBUG:paramiko.transport:kex engine KexNistp256 specified hash_algo DEBUG:paramiko.transport:Switch to new keys ... DEBUG:paramiko.transport:Adding ssh-rsa host key for Bnet-A101: b'a51ea5a576822573a37ce25441bd0241' DEBUG:paramiko.transport:userauth is OK INFO:paramiko.transport:Authentication (password) successful! DEBUG:paramiko.transport:[chan 0] Max packet in: 32768 bytes DEBUG:paramiko.transport:[chan 0] Max packet out: 4096 bytes DEBUG:paramiko.transport:Secsh channel 0 opened. DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok DEBUG:netmiko:write_channel: b'terminal width 511\n' DEBUG:netmiko:Pattern is: terminal width 511 DEBUG:netmiko:_read_channel_expect read_data: CCCCCCCC

抄送 C


|| |布拉迪斯拉发弗拉布BNET-A101| | | |这是一个由ORANGE BUSINESS SERVICES管理的专用系统| | | |访问此设备需要针对| | | |>&燃气轮机;实验室基础设施TACACS服务<<| | | |您的“saturne”登录应该在这里使用| | | | | |_____________________________________________________________________________|

DEBUG:netmiko:_read_channel_expect read_data: CCCCCCCC

中交 科科斯群岛 C ________________________________________________________________ | | |记录此设备上的活动,并可能对其进行监控| |________________________________________________________________|

Bnet-A101#端子宽度5

DEBUG:netmiko:_read_channel_expect read_data: 11

DEBUG:netmiko:Pattern found: terminal width 511 CCCCCCCC

抄送 C


|| |布拉迪斯拉发弗拉布BNET-A101| | | |这是一个由ORANGE BUSINESS SERVICES管理的专用系统| | | |访问此设备需要针对| | | |>&燃气轮机;实验室基础设施TACACS服务<<| | | |您的“saturne”登录应该在这里使用| | | | | |_____________________________________________________________________________| 中交 中交 科科斯群岛 C ________________________________________________________________ | | |记录此设备上的活动,并可能对其进行监控| |________________________________________________________________|

Bnet-A101#端子宽度511

DEBUG:netmiko:In disable_paging DEBUG:netmiko:Command: terminal length 0

DEBUG:netmiko:write_channel: b'terminal length 0\n' DEBUG:netmiko:Pattern is: terminal\ length\ 0 DEBUG:netmiko:_read_channel_expect read_data: Bnet-A101# DEBUG:netmiko:_read_channel_expect read_data: terminal len DEBUG:netmiko:_read_channel_expect read_data: gth 0

DEBUG:netmiko:Pattern found: terminal\ length\ 0 Bnet-A101#terminal length 0

DEBUG:netmiko:Bnet-A101#terminal length 0

DEBUG:netmiko:Exiting disable_paging DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: Bnet-A101#

Bnet-A101# Bnet-A101# Bnet-A101# Bnet-A101# Bnet-A101# Bnet-A101#

DEBUG:netmiko:read_channel: DEBUG:netmiko:[find_prompt()]: prompt is Bnet-A101# DEBUG:netmiko:write_channel: b'ssh 192.168.247.2\n' DEBUG:netmiko:read_channel: ssh 192.168.247.2

密码:

DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel:

DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel: CCCCAuthentication failed, please try again!

密码:

DEBUG:netmiko:read_channel: DEBUG:netmiko:[find_prompt()]: prompt is Password: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:Pattern is: Bnet-A101 DEBUG:netmiko:_read_channel_expect read_data: CCCCAuthentication failed, please try again!

密码:

调试:netmiko:\u读取\u通道\u预期读取\u数据:CCC身份验证失败,请重试! 密码:

DEBUG:netmiko:_read_channel_expect read_data:

DEBUG:netmiko:_read_channel_expect read_data:

[与192.168.247.2的连接被外部主机关闭] Bnet-A101# Bnet-A101#

DEBUG:netmiko:Pattern found: Bnet-A101 CCCCAuthentication failed, please try again!

密码: CCC身份验证失败,请重试! 密码:

[与192.168.247.2的连接被外部主机关闭] Bnet-A101# Bnet-A101#

DEBUG:netmiko:read_channel:

Bnet-A101# Bnet-A101# Bnet-A101# Bnet-A101# Bnet-A101#

DEBUG:netmiko:Clear buffer detects data in the channel DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'\n' DEBUG:netmiko:read_channel:

Bnet-A101#

DEBUG:netmiko:read_channel: DEBUG:netmiko:[find_prompt()]: prompt is Bnet-A101# DEBUG:netmiko:read_channel: DEBUG:netmiko:write_channel: b'show version\n' DEBUG:netmiko:Pattern is: show\ version DEBUG:netmiko:_read_channel_expect read_data: s DEBUG:netmiko:_read_channel_expect read_data: how version

DEBUG:netmiko:Pattern found: show\ version show version

DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel: DEBUG:netmiko:read_channel:

在R1而非R2下执行连接的sh ip路由的输出


Tags: debugparamikoreadoutputnetconnectchannelpassword

热门问题