我是python的新手,正在探索paramiko模块。我希望使用paramiko模块访问(使用NETCONF)我的路由器。
以下是我正在尝试的代码: -
import paramiko
import socket
ROUTER_IP='192.168.2.101'
USERNAME='test'
PASSWORD='test'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
CLOSE = """
<rpc>
<close-session/>
</rpc>"""
SOFT_ADD = "***RPC Operations***"
socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket.connect((ROUTER_IP, 830))
trans = paramiko.Transport(socket)
trans.connect(username=USERNAME, password=PASSWORD)
#CREATE CHANNEL FOR DATA COMM
ch = trans.open_session()
name = ch.set_name('netconf')
#Invoke NETCONF
ch.invoke_subsystem('netconf')
#SEND COMMAND
ch.send(SOFT_ADD)
#Recieve data returned
data = ch.recv(2048)
while data:
data = ch.recv(1024)
print data,
if data.find('</rpc-reply>') == 0:
#We have reached the end of reply
ch.send(CLOSE)
ch.close()
trans.close()
socket.close()
但我每次尝试都会收到以下错误。
Traceback (most recent call last):
File "ssh_netconf_temp.py", line 34, in <module>
socket.connect((ROUTER_IP, 830))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
路由器具有简单的ssh配置,没有阻止ACL或端口。我能够在没有python的情况下建立netconf会话。