2012-10-16 134 views
0

我正在使用ncclient连接到netconf。然而,当我尝试通过python连接连接netconf时会引发意外的会话关闭错误

“ncclient.transport.errors.SessionCloseError:意外的会话关闭”错误被抛出。我正在使用的代码片段如下

manager.connect('<servername>',22,username='<username>') 

对此的任何帮助都非常感兴趣。我能够通过使用公钥连接到远程服务器,因此我没有在连接中提供passwordk

而在netconf服务器日志中,我能够看到访问被拒绝的错误。 (即使当我用用户名和密码尝试时,我也得到了同样的问题)

回答

1

您还没有提供很多信息。

  1. 您使用的是ncclient的哪一个版本?
  2. 您正在使用哪种版本的Python?
  3. 您试图连接到哪个NETCONF实现?这是一个实际的交换机或路由器,或者像运行libnetconfyuma的Linux服务器?

基础上的信息在这里,我可以想像一对夫妇的事情都是错误的:

  • paramiko没有使用正确的密钥来建立SSH传输。
  • 您正试图与SSH服务器而不是NETCONF服务器建立NETCONF会话。

在你的脚本中,创建一些类似manager.logging.basicConfig(filename='ncclient.log', level=manager.logging.DEBUG)的日志,然后重新运行你的脚本 - 你会得到更多的信息吗?

这是一个古老的问题,但我希望我至少能指出你正确的方向。

0

它可能是你的机器不知道对方(就像当你通过普通的ssh连接并获得“unknown key,really connect(y/n)?”的错误)。在这种情况下,默认情况下会话将会不连接要改变这种行为,使用“unknown_host_cb”参数:

def allowUnknownHosts(host,fingerprint): 
    return True 

self.manager = manager.connect(host=host, port=port, username=user,password=password, unknown_host_cb=allowUnknownHosts) 
相关问题