python调用crt自动登录_secureCRT自动登录脚本(python)
由于每次登录都要输入用户名和密码,还有个别设备不能用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)相关推荐
- Python调用OpenStack API 《通过RESTful编写Python运维》
目录 Python调用OpenStack API <通过RESTful编写Python运维> 赛题实施 1. 认证服务:用户管理 (1&#x
- Mac上python+selenium实现微博登录和自动评论
最近开始追星,希望能给他尽一份力.本文是基于Win的微博自动评论的基础上,在Mac电脑上进行的微博自动化评论尝试,包含登陆微博和评论两大功能,该尝试是基于mac电脑,win电脑可参考Win的微博自动评 ...
- python自动登录校园网_免费自动登录国科大校园网python脚本
UCAS-Network-Login A python program that helps you log in UCAS network for free. 免费自动登录国科大校园网 声明:本软件 ...
- Python实现京东自动登录(自动完成滑块验证)
前提要配置好webdriver,不会的可以百度一下,我用的是Chrome的. Python自动登录京东,这里需要填写自己的账号和密码 id = "*********" # 用户账号 ...
- 2020-08-27 RPA uipath入门demo,超级鹰实现验证码自动登录,自动搜索和拉取数据到excel,robot和Orchestrator共同实现定时安排机器人执行任务。
资源地址:https://download.csdn.net/download/u012742970/12773335 本文主要讲解uipath studio,uirobot,Orchestrator ...
- linux sshd自动登录,SSH自动登录的几种方法
1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A ...
- python调用sdk的文章_如何使用 python 接入虹软 ArcFace SDK
公司需要在项目中使用人脸识别SDK,并且对信息安全的要求非常高,在详细了解市场上几个主流人脸识别SDK后,综合来看虹软的Arcface SDK比较符合我们的需求,它提供了免费版本,并且可以在离线环境下 ...
- python调用adb shell命令_如何在python脚本里面连续执行adb shell后面的各种命令
如何在python脚本里面连续执行adb shell后面的各种命令 adb shell "cd /data/local && mkdir tmp" adb shel ...
- python调用有道翻译_如何用python“优雅的”调用有道翻译?
前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...
- python调用cmd执行命令_详解python调用cmd命令三种方法
目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...
最新文章
- 使用slice和concat对数组的深拷贝和浅拷贝
- mfc如何判断读到文件尾_C++ 判断读取文件尾
- uva 101 木块问题
- 删库跑路大神的一生:曾在家造炸弹被捕,现卖房押宝NFT,原是开源创业之星...
- norminv函数是什么matlab,norminv函数的用法,表示的是什么意思
- svn版利用什么技术实现_金葱粉涂料印花利用了什么技术?
- Java RandomAccessFile writeLong()方法与示例
- What are the best IDEs for the Go programming language?
- 数据结构基础知识(2)
- 惊呆了!JDK1.8竟然打破了我对接口的一切认知...
- 隐马尔科夫模型HMM学习最佳范例
- 正则表达式(一):php常用的正则匹配
- android 定位 指南针,Android 实现指南针效果
- Java实战项目-移动电商秒杀系统seckill优化
- acm题库c语言,C语言acm竞赛习题集锦.doc
- QEMU中通过GPA得到对应HVA的方法
- 杭电 2072 单词数(题解+代码)
- CSS设计指南---字体和文本的布局
- 知识百科:针式打印机打印头是核心技术
- Mask Scoring R-CNN[详解]
热门文章
- 以下是一段歌词,请从这段歌词中统计出朋友出现的次数。 这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。 朋友一生一起走,那些日子不再
- 会议论文投稿到接收流程【手里有粮心中不慌】
- 阿里云服务器价格表(最新海外地域价格表)
- Java 创建一个Customer类,类中的属性有姓名、年龄、性别,然后创建两个Customer对象,把这两个对象存储在ArrayList对象中,然后再从ArrayList对象中读取出来。
- faster rcnn理论讲解
- freyja将重新把重心放在orm、sharding、cache上
- 每天学习虚幻4(一)
- 大数据统计分析、驾驶舱页面,拥有20个例子
- Ubuntu系统清理瘦身
- 【Linux安装】Win10安装Ubuntu双系统(含BIOS操作)