diff options
author | hochikong <1097225749@qq.com> | 2016-07-24 22:44:49 +0800 |
---|---|---|
committer | hochikong <1097225749@qq.com> | 2016-07-24 22:44:49 +0800 |
commit | cf04bae19e80a39a62644d1b96f5f58302242280 (patch) | |
tree | 063533f5ec5152761bbdc856d79c7673dcda5b4b /vyroute/Router.py | |
parent | b07b336d6a674ae18636274e4dd78df1c372cf78 (diff) | |
download | python-vyos-mgmt-cf04bae19e80a39a62644d1b96f5f58302242280.tar.gz python-vyos-mgmt-cf04bae19e80a39a62644d1b96f5f58302242280.zip |
T86 Python management library methods give timeouts
Use pxssh replace exscript
Attention:When you execute the logout method,you can't use this object any more.You must create a new BasicRouter substance to login the former VyOS system.
Diffstat (limited to 'vyroute/Router.py')
-rw-r--r-- | vyroute/Router.py | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/vyroute/Router.py b/vyroute/Router.py index 0b92002..86f3c78 100644 --- a/vyroute/Router.py +++ b/vyroute/Router.py @@ -1,7 +1,6 @@ # Copyright (c) 2016 Hochikong -from Exscript.protocols import SSH2 -from Exscript import Account +from pxssh import pxssh from vyroute.basic_function import Modifylo from vyroute.basic_function import StaticRoute from vyroute.basic_function import RIPRoute @@ -80,9 +79,8 @@ class BasicRouter(Router): self.__divi = self.__cred.index(":") self.__username = ''.join(self.__cred[:self.__divi]) self.__passwd = ''.join(self.__cred[self.__divi+1:]) - self.__account = Account(self.__username, self.__passwd) - self.__conn = SSH2() - self.__status = {"object": None, "commit": None, "save": None, "configure": None} + self.__conn = pxssh() + self.__status = {"status": None, "commit": None, "save": None, "configure": None} def status(self): """Check the router inner status @@ -97,9 +95,8 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__conn.connect(self.__address) is True: - self.__conn.login(self.__account) - self.__status["object"] = "login" + if self.__conn.login(self.__address, self.__username, self.__passwd) is True: + self.__status["status"] = "login" return {"Result": "Login successfully."} else: return {"Error": "Connect Failed."} @@ -108,12 +105,13 @@ class BasicRouter(Router): def logout(self): """Logout the router + Attention! If you logout,you can not reuse this Router object.You should create a new BasicRouter :return: a python dictionary """ try: - self.__conn.close(force=True) - self.__status["object"] = "logout" + self.__conn.close() + self.__status["status"] = "logout" self.__status["configure"] = None return {"Result": "Logout successfully."} except Exception as e: @@ -125,9 +123,11 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] is not "Yes": - self.__conn.execute("configure") + self.__conn.sendline("configure") + self.__conn.prompt(0) + self.__conn.set_unique_prompt() self.__status["configure"] = "Yes" return {"Result": "Active configure mode successfully."} else: @@ -143,12 +143,13 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": if self.__status["commit"] is None: return {"Error": "You don't need to commit."} if self.__status["commit"] == "No": - self.__conn.execute("commit") + self.__conn.sendline("commit") + self.__conn.prompt() self.__status["commit"] = "Yes" return {"Result": "Commit successfully."} else: @@ -166,13 +167,14 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": if self.__status["commit"] == "Yes": if self.__status["save"] is None: return {"Error": "You don't need to save."} if self.__status["save"] == "No": - self.__conn.execute("save") + self.__conn.sendline("save") + self.__conn.prompt() self.__status["save"] = "Yes" return {"Result": "Save successfully."} else: @@ -193,10 +195,11 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": if force is True: - self.__conn.execute("exit discard") + self.__conn.sendline("exit discard") + self.__conn.prompt() self.__status["configure"] = "No" self.__status["save"] = None self.__status["commit"] = None @@ -204,7 +207,8 @@ class BasicRouter(Router): if force is False: if self.__status["commit"] == "Yes": if self.__status["save"] == "Yes": - self.__conn.execute("exit") + self.__conn.sendline("exit") + self.__conn.prompt() self.__status["configure"] = "No" self.__status["save"] = None self.__status["commit"] = None @@ -231,7 +235,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = Modifylo.modifylo(self.__conn, data) if "Result" in res: @@ -264,7 +268,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = DeleteRoute.deleteroute(self.__conn, data) if "Result" in res: @@ -297,7 +301,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = StaticRoute.staticroute(self.__conn, data) if "Result" in res: @@ -330,7 +334,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = RIPRoute.riproute(self.__conn, data) if "Result" in res: @@ -363,7 +367,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = OSPFRoute.ospfarea(self.__conn, data) if "Result" in res: @@ -396,7 +400,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = OSPFRoute.router_id(self.__conn, data) if "Result" in res: @@ -429,7 +433,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = OSPFRoute.ospf_redistribute(self.__conn, data) if "Result" in res: @@ -457,7 +461,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = OSPFRoute.ospf_adjacency(self.__conn) if "Result" in res: @@ -490,7 +494,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = OSPFRoute.ospf_default_route(self.__conn, data) if "Result" in res: @@ -523,7 +527,7 @@ class BasicRouter(Router): :return: a python dictionary """ try: - if self.__status["object"] == "login": + if self.__status["status"] == "login": if self.__status["configure"] == "Yes": res = OSPFRoute.ospf_route_map(self.__conn, data) if "Result" in res: |