SecureCrt脚本函数(一)

SecureCrt脚本函数(一)

SecureCrt脚本

自动化

测试

JS脚本

引言

  • Crt脚本的实现需要使用Crt定义好的各个对象的属性和方法来实现,脚本函数系列将逐一介绍Crt脚本中最常使用的对象,对这些对象以层级关系画出,本篇首先介绍顶级对象crt的属性和方法。属性是一个静态的对象,方法是具体执行的动作。属相和方法底下还可以有子属性和子方法,这个其实就和面向对象的编程方式很像,有些基础的人应该会很快掌握。

前言

在学习脚本函数前,先说说在脚本中头两行(必须写在头两行,且最好不要有空格回车之类的字符)所必须添加的标识,这两行标识告诉Crt当前执行的脚本需要使用什么解释器进行解释。其中language为语言,现支持Jscript、VBScript、Python、Perl,interface为接口,现在都是1.0,以下为示例,修改对应的语言即可:
  • JS
  1. # $language = "JScript"
  2. # $interface = "1.0"
  • Python
  1. # $language = "Python"
  2. # $interface = "1.0"

顶级对象‘crt‘的子属性和方法

属性                 方法
Dialog               GetActiveTab
Screen               GetScriptTab
ScriptFullName       GetTabCount
Session              GetTab
Version              Quit
Window               Sleep

属性

Dialog

解释 定义了一个Dialog(对话框),通过这个对象,可以通过调用该对象的子属性和方法实现对话框的相关功能。
脚本实现

  • JS
var diaObj = crt.Dialog;
  • Python
diaObj = crt.Dialog;

Screen

解释 定义Screen(屏幕)对象,该对象是整个脚本中的灵魂,包含数据抓取、数据发送、等待数据等等重要功能都是有该对象的子属性和方法实现的。后面会介绍该对象的属性和方法,可以作为重点关注。
脚本实现

  • JS
var scrObj = crt.Screen;
  • Python
scrObj = crt.Dialog;

ScriptFullName

解释 该对象返回当前执行脚本的全名,其中包含脚本路径和脚本名,可以使用中文路径和文件名。该属性没有子属性和方法。
脚本实现

  • JS
var scrName = crt.ScriptFullName;
  • Python
scrName = crt.ScriptFullName;

Session

解释 定义当前会话属性,该属性有许多很实用的属性和方法可以使用。同样作为后重点关注
脚本实现

  • JS
var sessionObj = crt.Session;
  • Python
sessionObj = crt.Session;

Version

解释 返回当前Crt的软件版本,通常该属性用于比较版本新旧,以处理在不同版本上不能兼容的问题。
脚本实现

  • JS
  1. // 检查Crt版本,如果低于7.3,则退出Crt。
  2. var crtVer = crt.Version;
  3. if ( crtVer < 7.3 ) {
  4. crt.Quit();
  5. }
  • Python
  1. # 检查Crt版本,如果低于7.3,则退出Crt。
  2. crtVer = crt.Version;
  3. if ( crtVer < 7.3 ) {
  4. crt.Quit();
  5. }

Window

解释 返回当前程序的窗口对象,该对象下有子对象,可以实现诸如隐藏当前窗口等的功能。
脚本实现

  • JS
var crtWin = crt.Window;
  • Python
crtWin = crt.Window;

方法

GetActiveTab()

解释 Crt软件的管理是多Tab的,该方法返回当前活跃状态的Tab界面,该界面作为一个新的Tab属性使用,而Tab属性本身又有许多子属性和方法,因此该方法也是比较实用的一个函数。
脚本实现

  • JS
var actTab = crt.GetActiveTab();
  • Python
actTab = crt.GetActiveTab();

GetScriptTab()

解释 获取当前脚本执行的Tab对象,该对象有一些子对象和方法,通过获取Tab页面,可以轻松的实现在多个Tab中同时发送数据的功能。
脚本实现

  • JS
  1. // 获取当前脚本执行的Tab,并获取编号(Index从1开始)
  2. var scriptTab = crt.GetActiveTab();
  3. var tabNum = scriptTab.Index;
  4. // 在当前Tab上发送数据
  5. scriptTab.Screen.Send("脚本执行的Tab是:"+tabNum);
  • Python
  1. # 获取当前脚本执行的Tab,并获取编号(Index从1开始)
  2. scriptTab = crt.GetActiveTab();
  3. tabNum = scriptTab.Index;
  4. # 在当前Tab上发送数据
  5. scriptTab.Screen.Send("脚本执行的Tab是:"+tabNum);

GetTabCount()

解释 获取当前总Tab数目,是一个数值类型返回值
脚本实现

  • JS
  1. // 获取总Tab数目
  2. var tabCount = crt.GetTabCount();
  • Python
  1. # 获取总Tab数目
  2. tabCount = crt.GetTabCount();

GetTab(Index)

解释 获取某个位置的Tab对象,该位置即为tab的Index,从1开始,即从当前Crt窗口的最左侧Tab数起。
脚本实现

  • JS
  1. // 获取指定编号的Tab对象
  2. var tabCount = crt.GetTabCount();
  3. var gTab = "";
  4. // 从Tab1到所有Tab依次发送数据
  5. for ( var i = 1 ; i <= tabCount; i++ ) {
  6. gTab = crt.GetTab(i);
  7. gTab.Screen.Send("当前Tab为:"+i);
  8. }
  • Python
  1. # 获取指定编号的Tab对象
  2. tabCount = crt.GetTabCount();
  3. gTab = "";
  4. # 从Tab1到所有Tab依次发送数据
  5. for ( i in range(tabCount+1) ) {
  6. gTab = crt.GetTab(i);
  7. gTab.Screen.Send("当前Tab为:"+i);
  8. }

Sleep(millisec)

解释 脚本暂停运行时间,millisec:毫秒 该功能是极为常用的功能
脚本实现

  • JS
  1. // 获取指定编号的Tab对象
  2. var tabCount = crt.GetTabCount();
  3. var gTab = "";
  4. // 从Tab1到所有Tab依次发送数据
  5. for ( var i = 1 ; i <= tabCount; i++ ) {
  6. gTab = crt.GetTab(i);
  7. // 暂停5秒再发送数据
  8. crt.Sleep(5000);
  9. gTab.Screen.Send("当前Tab为:"+i);
  10. }
  • Python
  1. # 获取指定编号的Tab对象
  2. tabCount = crt.GetTabCount();
  3. gTab = "";
  4. # 从Tab1到所有Tab依次发送数据
  5. for ( i in range(tabCount+1) ) {
  6. gTab = crt.GetTab(i);
  7. # 暂停5秒再发送数据
  8. crt.Sleep(5000);
  9. gTab.Screen.Send("当前Tab为:"+i);
  10. }

Quit()

解释 退出Crt软件。(不是退出脚本,是直接退出软件。)
脚本实现

  • JS
  1. // 如果直接使用crt.Quit的话只要有会话是激活的,那么就会有弹窗出来,因此,可以使用for循环,先将所有Tab断连,再退出。
  2. // 断连所有Tab
  3. var tabCount = crt.GetTabCount();
  4. var gTab = "";
  5. for ( var i = 1 ; i <= tabCount; i++ ) {
  6. gTab = crt.GetTab(i);
  7. gTab.Session.Disconnect();
  8. }
  9. // 此时可以直接退出Crt
  10. crt.Quit()
  • Python
  1. // 如果直接使用crt.Quit的话只要有会话是激活的,那么就会有弹窗出来,因此,可以使用for循环,先将所有Tab断连,再退出。
  2. // 断连所有Tab
  3. tabCount = crt.GetTabCount();
  4. gTab = "";
  5. for ( i in range(tabCount+1) ) {
  6. gTab = crt.GetTab(i);
  7. gTab.Session.Disconnect();
  8. }

总结


 1. 在写脚本时一定要添加前言所述的脚本头部两行,且注意最好不要有空格和回车等。

 2. crt的最常用最基本的二级属性和方法上面都已经介绍完了,总的一个应用原则是属性是静态的,在使用时不需要加(),而方法是动态的(实际上就是函数),因此在调用时需要用(),有些方法是有参数,有些是没有的,在使用时也要注意。

 3. 希望通过本篇对二级属性和方法做一个全面的讲解,可以更清楚的知道crt函数中都有哪些具体的函数,哪些可能是重点,哪些可能最常用,以及如何使用这些函数,都可以根据上面的解释和脚本实现中获取相关信息。

 4.但凡有子属性或子方法的二级属性和方法,都可以通过后面教程中的写法直接引入,不需要每次都赋值给一个对象使用。

 5.希望各位看官可以从中学到些东西,本篇抛砖引玉就到此结束了。下一篇将会就二级属性‘Dialog‘做详细说明,敬请期待...
时间: 2024-11-03 03:42:25

SecureCrt脚本函数(一)的相关文章

SecureCrt脚本(二)二级对象之Dialog

SecureCrt脚本(二)二级对象之Dialog SecureCrt脚本 自动化 测试 JS脚本 前言 上篇"SecureCrt 脚本函数(一)"中详细介绍了顶级对象’crt’中的子属性和子方法,本篇中将详细介绍’crt’的子属性’Dialog’的方法.'Dialog’主要是用于Crt构建自己的和用户能够交互的简单界面,比如输入字符,弹出对话框,输出提示框等. 语法 crt.Dialog.Method([arglist]) 方法(Method) 一.FileOpenDialog 解释

SecureCRT脚本编写常用函数(一)

SecureCRT脚本编写常用函数(一) 测试 python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 索引 本阶段重点对SecureCRT中Screen相关函数进行学习,针对Pytho

unity中三种调用其他脚本函数的方法

第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数 第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数 unity中三种调用其他脚本函数的

VC和LUA混合开发之VC程序调用Lua脚本函数

http://www.cnblogs.com/clever101/archive/2010/04/14/1712207.html 作者:朱金灿 来源:http://www.cnblogs.com/clever101/ Lua语言以其卓越的可扩展性.简单.高效率和与平台无关性在游戏领域得到广泛应用.今天花了一些时间学习VC和Lua如何混合开发,编写了一个小例程,和大家分享一下这方面的经验. 首先在http://www.lua.org/ftp/下载Lua的最新版本:lua-5.1.4.然后用VS C

使用SecureCRT脚本功能

bat打开SecureCRT并连接: d: cd Program Files\VanDyke Software\SecureCRT\ securecrt.exe /SSH2 /L root /P 22 /PASSWORD 123456 192.168.0.172 参数: #/SSH2 是协议名称 #/L 是用户名 #/P 是端口 #/PASSWORD 是密码 #最后加上IP地址 参考:http://blog.csdn.net/xtu123/article/details/51356710 sec

C 语言调用python 脚本函数

刚好几个月前做过,C++ 函数里面先加载python 脚本,再调用 里面的 def 函数,我把代码贴出来,你在main 函数里面,调用getDataByScript 函数,另外相同目录下放一个 fuckTest.py ,我是centos6.7   编译 g++ -o test test.cpp -lpython2.7      callPython.h #include<Python.h> #include<string> using namespace std;   char*

Shell脚本——函数(function)

做为一个经常写脚本的运维人员来讲,都能发现一个问题,很多时候我们在不同的脚本里面重复的写着同一段代码.比如我们要去使用正则表达式去判断IP地址的合法性问题,如果每次都去写一遍这个匹配IP的表达式,整个表达式写下来老长老长的,0-9的数字组合看的眼都花了,是不是很累了.当然有人会说了,保存一份正确的代码之后,需要用这段代码的时候,直接粘贴到正在编写的脚本里面不就行了嘛!是没错,但这样是不是很多脚本里面都重复存放着同一段代码,额外增加了脚本的代码量.有没有一个两全其美的办法,让我们的脚本代码量又小,

Unity学习笔记—— 常用脚本函数

1. Awake() Start() Update() FixedUpdate()  unity 是单线程的 , 对于unity后台执行脚本,每个脚本的Awake.Update.LateUpdate.FixedUpdate,方法在后台都有一个总汇.把每个 后台的Awake() { 脚本0中的Awake(); 脚本1中的Awake(): 脚本2中的Awake(); } 后台的方法 Awake.Update.LateUpdate.FixedUpdate等等都是按照顺序,等所有子脚本中的Awake执行

如何在GameMaker (GML)中执行存储在数据结构中的Script(脚本 函数)

最近开始使用GameMaker做一些东西,所以要对GameMaker的脚本语言GML的基础有一些了解. 由于这门语言基本来讲是一门面向过程的语言,所以在有些事情上的实现方法上会和面向对象的语言所使用的常用方法有些区别. 比如在面向对象的语言中,我们经常会把一些相关的数据.方法等封装成一个类(Class),之后可能会把这个类进行实例化,便产生了一个对象(Object).而当我们需要使用这个对象中的数据或方法的时候,可能就会用如下的方式进行调用: 1 Object obj = new Object