Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion litenc/litenc.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,17 @@ def connect(self, user=os.getenv('USER'), server="localhost", port=830, password
key = self.t.get_remote_server_key()

if(password==None):
self.t.auth_publickey(user, paramiko.RSAKey.from_private_key_file(private_key))
_key = None
for key_class in (paramiko.RSAKey, paramiko.DSSKey, paramiko.ECDSAKey, paramiko.Ed25519Key):
try:
_key = key_class.from_private_key_file(private_key)
break
except Exception as e:
pass
if _key is not None:
self.t.auth_publickey(user, _key)
else:
raise Exception("Invalid private key: " + str(private_key))
else:
self.t.auth_password(user, password)

Expand Down
25 changes: 23 additions & 2 deletions tntapi/tntapi/tntapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,19 @@ def network_connect(network, skip_unreachable=False):
password=None
ncport = node.xpath('netconf-node:netconf-connect-params/netconf-node:ncport', namespaces=namespaces)[0].text

if(1==len(node.xpath('netconf-node:netconf-connect-params/netconf-node:public-key', namespaces=namespaces))):
publickey=node.xpath('netconf-node:netconf-connect-params/netconf-node:public-key', namespaces=namespaces)[0].text
else:
publickey=os.getenv('HOME')+"/.ssh/id_rsa.pub"

if(1==len(node.xpath('netconf-node:netconf-connect-params/netconf-node:private-key', namespaces=namespaces))):
privatekey=node.xpath('netconf-node:netconf-connect-params/netconf-node:private-key', namespaces=namespaces)[0].text
else:
privatekey=os.getenv('HOME')+"/.ssh/id_rsa"

print("Connect to " + node_id +" (server=%(server)s user=%(user)s) password=%(password)s ncport=%(ncport)s:" % {'server':server, 'user':user, 'password':password, 'ncport':ncport})
conns[node_id] = netconf_session_litenc(host=server,port=int(ncport),username=user,password=password,timeout=100)
conns[node_id] = netconf_session_litenc(host=server,port=int(ncport),username=user,password=password,timeout=100,publickey=publickey,privatekey=privatekey)


if conns[node_id] == None:
print("FAILED connect")
Expand Down Expand Up @@ -88,8 +99,18 @@ def network_connect_yangrpc(network):
password=None
ncport = node.xpath('netconf-node:netconf-connect-params/netconf-node:ncport', namespaces=namespaces)[0].text

if(1==len(node.xpath('netconf-node:netconf-connect-params/netconf-node:public-key', namespaces=namespaces))):
publickey=node.xpath('netconf-node:netconf-connect-params/netconf-node:public-key', namespaces=namespaces)[0].text
else:
publickey=os.getenv('HOME')+"/.ssh/id_rsa.pub"

if(1==len(node.xpath('netconf-node:netconf-connect-params/netconf-node:private-key', namespaces=namespaces))):
privatekey=node.xpath('netconf-node:netconf-connect-params/netconf-node:private-key', namespaces=namespaces)[0].text
else:
privatekey=os.getenv('HOME')+"/.ssh/id_rsa"

print("Connect to YANG device " + node_id +" (server=%(server)s user=%(user)s) password=%(password)s ncport=%(ncport)s:" % {'server':server, 'user':user, 'password':password, 'ncport':ncport})
yconns[node_id] = yangrpc.connect(server, int(ncport), user, password, os.getenv('HOME')+"/.ssh/id_rsa.pub", os.getenv('HOME')+"/.ssh/id_rsa", "--dump-session=nc-session-%s-" % (node_id))
yconns[node_id] = yangrpc.connect(server, int(ncport), user, password, publickey, privatekey, "--dump-session=nc-session-%s-" % (node_id))

if yconns[node_id] == None:
print("FAILED connect")
Expand Down
8 changes: 4 additions & 4 deletions tntapi/tntapi/tntapi_netconf_session_litenc.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ class tntapi_netconf_session_litenc_class:
def __init__(self):
return

def connect(self, host="localhost",port=830,username="root",password=None,timeout=100):
def connect(self, host="localhost",port=830,username="root",password=None,timeout=100,private_key=None,public_key=None):
conn = litenc()
if(password==None):
password_str=""
else:
password_str="password="+password
ret = conn.connect(server=host, port=port, user=username, password=password, timeout=timeout)
ret = conn.connect(server=host, port=port, user=username, password=password, timeout=timeout, private_key=private_key, public_key=public_key)
if ret != 0:
print("[FAILED] Connecting to server=%(server)s:" % {'server':host})
return None
Expand Down Expand Up @@ -61,9 +61,9 @@ def rpc(self, rpc_xml_str):
def close(self):
self.litenc_session.close()

def netconf_session_litenc(host="localhost",port=830,username="root",password="blah",timeout=100):
def netconf_session_litenc(host="localhost",port=830,username="root",password="blah",timeout=100,publickey=None,privatekey=None):
x=tntapi_netconf_session_litenc_class()
res=x.connect(host,port,username,password,timeout)
res=x.connect(host,port,username,password,timeout,privatekey,publickey)
if(res==0):
return x
else:
Expand Down