由于每次登录都要输入用户名和密码,还有个别设备不能用SSH2,而我又不记得是哪几台??!!

写个脚本,做个按钮,在Button Bar,New Button,在Action -> Function选Run Script,在Run Script选好脚本路径,自己命名个Label。

给2个版本的示例代码,都是可以直接运行的,一个简单点,但扩展性不好;一个复杂点,但具有很强的扩展性。

版本1:

单个文件,用户名和密码保存在全局变量中。

# $language = "python"

# $interface = "1.0"

#--------------------------------------------------------------------------------------

import os

#--------------------------------------------------------------------------------------

szSSH2UserName = '"asdaf adsf"'

szSSH2Passwd = "adsfqweradsf"

szTelnetUserName = "asdaf adsf"

szTelnetPasswd = szSSH2Passwd

def connectFun():

szHost = crt.Dialog.Prompt("Enter host IP address : ", "Host IP", "", False)

ssh2cmd = "/SSH2 /L %s /PASSWORD %s %s" % (szSSH2UserName, szSSH2Passwd, szHost)

telnetcmd = "/Telnet %s" % (szHost)

oTab = 0

crt.Screen.Synchronous = True

try:

crt.Session.ConnectInTab(ssh2cmd)

oTab = crt.GetActiveTab()

except:

try:

crt.Session.ConnectInTab(telnetcmd)

oTab = crt.GetActiveTab()

oTab.Screen.WaitForString("name")

oTab.Screen.Send(szTelnetUserName + "\r")

oTab.Screen.WaitForString("assword")

oTab.Screen.Send(szTelnetPasswd + "\r")

except:

crt.Dialog.MessageBox(szHost + " Login Failed!","Failed")

return oTab

connectFun()

版本2:

分三个文件,分别是autoConnect.py、connectEnv.py和UserNameAndPassword.txt。(放在同一目录下,且只要在crt中运行autoConnect.py就行了)

autoConnect.py登录逻辑代码,包括用户名和密码读取。

connectEnv.py打包了crt所有的API。可参考我重新打包的crt环境类

UserNameAndPassword.txt保存用户名和密码,第一行是用户名,第二行是密码。

autoConnect.py

# $language = "python"

# $interface = "1.0"

#--------------------------------------------------------------------------------------

import os

import sys

def getScriptPath():

return os.path.split(os.path.realpath(__file__))[0]

sys.path.append(getScriptPath())

import connectEnv

connectEnv.init(crt)

#--------------------------------------------------------------------------------------

class Device():

def __init__(self):

self.szDeviceIP = ''

self.szUserName = ''

self.szPasswd = ''

self.env = connectEnv.CrtEnv()

def initInformation(self):

self.szDeviceIP = self.env.inputBox("Enter host IP address : ", "Auto login")

self.__readUsernameAndPassword()

def login(self):

isLogin = self.env.login(self.getIP(), self.getUserName(), self.getPasswd())

if not isLogin:

self.env.messageBox(self.getIP() + " Login Failed!", "Failed")

return isLogin

def getIP(self):

return self.szDeviceIP

def getUserName(self):

return self.szUserName

def getPasswd(self):

return self.szPasswd

def __readUsernameAndPassword(self):

with open(getScriptPath() + "\\" + "UserNameAndPassword.txt", "r") as f:

self.szUserName = f.readline().strip('\n')

self.szPasswd = f.readline().strip('\n')

def main():

device = Device()

device.initInformation()

device.login()

main()

connectEnv.py

global crt

def init(crtAPI):

global crt

crt = crtAPI

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.__szInitPrompt = "#"

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 self.__getResult().encode('utf-8')

def changePrompt(self, szCMD):

self.__send(szCMD)

self.__oTab.Screen.WaitForString(szCMD, 1)

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

self.__updatePrompt()

def getTabName(self):

if self.__isTabEmpty():

self.__getCurrentTab()

return self.__oTab.Caption.encode('utf-8')

def getTab(self):

if self.__isTabEmpty():

self.__getCurrentTab()

return self.__oTab

def getPrompt(self):

return self.__szPrompt

def setPrompt(self, szPrompt):

self.__szPrompt = szPrompt

def setLog(self, szFileName):

self.__oTab.Session.LogFileName = szFileName

def log(self, isLog, isAppend = False):

self.__oTab.Session.Log(isLog, isAppend)

def getInitPrompt(self):

return self.__szInitPrompt

def setInitPrompt(self, szInitPrompt):

self.__szInitPrompt = szInitPrompt

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):

crt.Sleep(300)

self.__oTab.Screen.WaitForString(self.getInitPrompt())

def __send(self, szCMD):

szCMD = szCMD + '\r'

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 = self.__szPrompt.strip().encode('utf-8')

UserNameAndPassword.txt

asdaf adsf

adsfqweradsf

python调用crt自动登录_secureCRT自动登录脚本(python)相关推荐

  1. Python调用OpenStack API 《通过RESTful编写Python运维》

    目录 Python调用OpenStack API   <通过RESTful编写Python运维> 赛题实施 1. 认证服务:用户管理 (1&#x

  2. Mac上python+selenium实现微博登录和自动评论

    最近开始追星,希望能给他尽一份力.本文是基于Win的微博自动评论的基础上,在Mac电脑上进行的微博自动化评论尝试,包含登陆微博和评论两大功能,该尝试是基于mac电脑,win电脑可参考Win的微博自动评 ...

  3. python自动登录校园网_免费自动登录国科大校园网python脚本

    UCAS-Network-Login A python program that helps you log in UCAS network for free. 免费自动登录国科大校园网 声明:本软件 ...

  4. Python实现京东自动登录(自动完成滑块验证)

    前提要配置好webdriver,不会的可以百度一下,我用的是Chrome的. Python自动登录京东,这里需要填写自己的账号和密码 id = "*********" # 用户账号 ...

  5. 2020-08-27 RPA uipath入门demo,超级鹰实现验证码自动登录,自动搜索和拉取数据到excel,robot和Orchestrator共同实现定时安排机器人执行任务。

    资源地址:https://download.csdn.net/download/u012742970/12773335 本文主要讲解uipath studio,uirobot,Orchestrator ...

  6. linux sshd自动登录,SSH自动登录的几种方法

    1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A ...

  7. python调用sdk的文章_如何使用 python 接入虹软 ArcFace SDK

    公司需要在项目中使用人脸识别SDK,并且对信息安全的要求非常高,在详细了解市场上几个主流人脸识别SDK后,综合来看虹软的Arcface SDK比较符合我们的需求,它提供了免费版本,并且可以在离线环境下 ...

  8. python调用adb shell命令_如何在python脚本里面连续执行adb shell后面的各种命令

    如何在python脚本里面连续执行adb shell后面的各种命令 adb shell "cd /data/local && mkdir tmp" adb shel ...

  9. python调用有道翻译_如何用python“优雅的”调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...

  10. python调用cmd执行命令_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

最新文章

  1. 使用slice和concat对数组的深拷贝和浅拷贝
  2. mfc如何判断读到文件尾_C++ 判断读取文件尾
  3. uva 101 木块问题
  4. 删库跑路大神的一生:曾在家造炸弹被捕,现卖房押宝NFT,原是开源创业之星...
  5. norminv函数是什么matlab,norminv函数的用法,表示的是什么意思
  6. svn版利用什么技术实现_金葱粉涂料印花利用了什么技术?
  7. Java RandomAccessFile writeLong()方法与示例
  8. What are the best IDEs for the Go programming language?
  9. 数据结构基础知识(2)
  10. 惊呆了!JDK1.8竟然打破了我对接口的一切认知...
  11. 隐马尔科夫模型HMM学习最佳范例
  12. 正则表达式(一):php常用的正则匹配
  13. android 定位 指南针,Android 实现指南针效果
  14. Java实战项目-移动电商秒杀系统seckill优化
  15. acm题库c语言,C语言acm竞赛习题集锦.doc
  16. QEMU中通过GPA得到对应HVA的方法
  17. 杭电 2072 单词数(题解+代码)
  18. CSS设计指南---字体和文本的布局
  19. 知识百科:针式打印机打印头是核心技术
  20. Mask Scoring R-CNN[详解]

热门文章

  1. 以下是一段歌词,请从这段歌词中统计出朋友出现的次数。 这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。 朋友一生一起走,那些日子不再
  2. 会议论文投稿到接收流程【手里有粮心中不慌】
  3. 阿里云服务器价格表(最新海外地域价格表)
  4. Java 创建一个Customer类,类中的属性有姓名、年龄、性别,然后创建两个Customer对象,把这两个对象存储在ArrayList对象中,然后再从ArrayList对象中读取出来。
  5. faster rcnn理论讲解
  6. freyja将重新把重心放在orm、sharding、cache上
  7. 每天学习虚幻4(一)
  8. 大数据统计分析、驾驶舱页面,拥有20个例子
  9. Ubuntu系统清理瘦身
  10. 【Linux安装】Win10安装Ubuntu双系统(含BIOS操作)