频道栏目
首页 > 系统 > Linux > 正文

注册送白菜38

2018-09-29 15:02:07           
收藏   我要投稿

重构看的七七八八了,感觉应该练练手,自己打包一个SecureCRT的环境类。不过暂时没让我想到如何将这个类放在文件中,然后每次写脚本的时候import进来就好了,等有空再想想怎么解决。

所以现在还是只能复制粘贴后用。

其实再写个设备类,然后从设备类中调用crt环境类,就可以达到设备相关的东西和环境分开的效果。以后如果没有crt了,只要把crt环境类换掉就行了。

没有打包log功能,这个类是我用来直接在内存中处理回显字符串用的,所以不需要log。

注册送白菜38 $language = "python"

注册送白菜38 $interface = "1.0"

class CrtEnv():

@staticmethod

def promptBox(szMessage, szTitle):

return crt.Dialog.Prompt(szMessage, szTitle, "", True)

@staticmethod

def inputBox(szMessage, szTitle):

return crt.Dialog.Prompt(szMessage, szTitle, "", False)

@staticmethod

def messageBox(szMessage, szTitle):

crt.Dialog.MessageBox(szMessage, szTitle)

def __init__(self):

self.__oTab = None

self.__szPrompt = ""

self.__szHostname = ""

def login(self, szHostname, szUsername, szPassword):

self.__szHostname = szHostname

if self.__ssh(szUsername,szPassword):

return True

if self.__telnet(szUsername,szPassword):

return True

return False

def logout(self):

self.__oTab.Session.Disconnect()

def send(self, szCMD):

self.__checkEnv()

self.__send(szCMD)

self.__oTab.Screen.WaitForString(szCMD)

return str(self.__getResult())

def changePrompt(self, szCMD):

self.__send(szCMD)

self.__oTab.Screen.WaitForString(szCMD)

self.__oTab.Screen.WaitForString("Some String will not echo.", 1)

self.__updatePrompt()

def getTabName(self):

if self.__isTabEmpty():

self.__getCurrentTab()

return str(self.__oTab.Caption)

def __ssh(self, szUsername, szPassword):

szConnectString = "/SSH2 /L \"%s\" /PASSWORD \"%s\" %s" % \

(szUsername, szPassword, self.__szHostname)

if self.__connect(szConnectString) == False:

return False

self.__oTab.Screen.Synchronous = True

self.__waitDeviceTabInit()

return True

def __telnet(self, szUsername, szPassword):

szConnectString = "/Telnet %s" % (self.__szHostname)

if self.__connect(szConnectString) == False:

return False

self.__oTab.Screen.Synchronous = True

self.__oTab.Screen.WaitForString("ame")

crt.Sleep(200)

self.__send(szUsername)

self.__oTab.Screen.WaitForString("assword")

crt.Sleep(200)

self.__send(szPassword)

self.__waitDeviceTabInit()

return True

def __connect(self, szConnectString):

try:

self.__oTab = crt.Session.ConnectInTab(szConnectString)

return True

except:

return False

def __waitDeviceTabInit(self, szString = "注册送白菜38"):

crt.Sleep(300)

self.__oTab.Screen.WaitForString(szString)

def __send(self, szCMD):

szCMD = szCMD + &注册送白菜3839;\r&注册送白菜3839;

self.__oTab.Screen.Send(szCMD)

def __checkEnv(self):

if self.__isTabEmpty():

self.__getCurrentTab()

self.__oTab.Screen.Synchronous = True

if self.__isPromptEmpty():

self.__updatePrompt()

def __isPromptEmpty(self):

if self.__szPrompt == "":

return True

return False

def __isTabEmpty(self):

if self.__oTab == None:

return True

return False

def __getCurrentTab(self):

self.__oTab = crt.GetActiveTab()

def __getResult(self):

return self.__oTab.Screen.ReadString(self.__szPrompt)

def __updatePrompt(self):

crt.Sleep(300)

rowIndex = self.__oTab.Screen.CurrentRow

colIndex = self.__oTab.Screen.CurrentColumn - 1

self.__szPrompt = self.__oTab.Screen.Get(rowIndex, 0, rowIndex, colIndex)

self.__szPrompt = str(self.__szPrompt.strip())

def main():

注册送白菜38 测试用。获取当前tab标签,并直接向设备发送命令

test1 = CrtEnv()

test1.send("terminal length 0")

CrtEnv.messageBox(test1.send("sh int status"),"run")

CrtEnv.messageBox(test1.getTabName(), "getTabName")

test1.changePrompt("conf t")

CrtEnv.messageBox(test1.send("do sh ip int br"),"run")

test1.changePrompt("end")

CrtEnv.messageBox(test1.send("sh int status"),"run")

注册送白菜38 新登录一台设备

test2 = CrtEnv()

test2.login("192.168.1.1","qw er","wqerqwer")

test1.logout()

test2.logout()

main()

上一篇:虚拟机中的Linux不能Ping通主机Window问题
下一篇:Docker之镜像管理及Dockerfile解析
相关文章
图文推荐

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站