视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SecureCRT脚本对象详解
2025-09-27 23:23:02 责编:小OO
文档
1.脚本类型

SecureCRT支持三种类型的自动化脚本,vbs、javascript和python,书写语法如下。

vbs

# $language = "VBScript"

# $interface = "1.0"

Sub Main

.....

End Sub

Javascript

# $language = "JScript"

# $interface = "1.0"

function main() {

.....

}

python(需SecureCRT6.6以上才支持)

# $language = "Python"

# $interface = "1.0"

def main():

    .....

main()

2. SecureCRT内置对象

SecureCRT提供了内置对象与脚本交互,这些对象封装了属性与操作,可用来操纵程序行为。其中crt是顶级对象,代表了 SecureCRT进程,其属性有ActivePrinter(打印机),Dialog,Screen,Session(会话),Version,Window(窗口) 这些二级对象,操作有 Sleep,Quit等。

2.1 Screen,操作屏幕的输入输出

要注意的是,Screen只代表客户区的可见部分,这部分的大小可以通过会话选项里的逻辑行、列数来设定。而整个会话的输出记录是回滚区,没有对应的对象;

属性:

CurrentColumn,CurrentRow(当前光标所在逻辑行)

因为逻辑行、列数限定了可见区的大小,所以当输出满屏时,CurrentRow 和 Rows 的值其实是一样的,都是最大值,不会随着屏幕输出再改变,这种设计实在是有些 egg hurt,不知能否通过设置来解决

Columns,Rows(可见区中的输出行数)

Synchronous(同步模式,据说为了避免某些情况下的数据丢失,建议开启)。

crt.Screen.Synchronous = True

crt.Screen.Synchronous = False

操作:

Clear清掉所有输出,包括回滚与提示符,直接变白板;

crt.Screen.Clear

Get 获取某个矩形区域内的输出文本,用行列数当坐标来指定;

crt.Screen.Get(row1, col1, row2, col2)

Get2 获取指定两行间的输出文本

crt.Screen.Get2(row1, row2)

ReadString获得命令的执行输出

char = crt.Screen.ReadString()

Send 发送命令字符串(包括换行符);

crt.Screen.Send “ps -ef|grep AppServer|grep -v grep” & vbCr

SendSpecial 用来发送 SecureCRT 的一些内置命令,如键映射

screen.SendSpecial “MENU_PASTE”

screen.SendSpecial “TN_BREAK”

screen.SendSpecial “VT_PF1”

WaitForString 等待输出某字符串,支持超时;

WaitForStrings 多个字符串中任何一个;

index = crt.Screen.WaitForStrings(“#” , “>” , 10)

返回值为为字符串的索引,从1开始,超时则返回0。

WaitForCursor 等待光标移动,

WaitForKey 等待任意键按下,

2.2 Session,提供当前会话接口

属性

Connected当前会话是否连接,返回bool值*

LocalAddress 返回本PC机IP*

RemoteAddress 返回会话 IP*

RemotePort返回会话端口*

LogFileName:设置或返回当前会话日志目录*

Logging:是否开启日志,返回bool值*

Path:当前会话开始的ini配置文件地址

操作:

Connect 连接会话; 

        crt.Screen. Connect arg

        crt.session.Connect("/s mysession")  ‘直接连接会话

        crt.Session.Connect("/TELNET 214.25.28.25 23")  ‘telnet 23号端口

        cmd = "/ssh2 /L " & user &" /PASSWORD " & pwd & " /C 3DES " & ip

        crt.Session.Connect cmd

/S session_name:开始SecureCRT并打开会话连接。

/SSH1 [ssh_options] hostname:以SSH1协议打开hostname连接。

[/C cipher]:标识加密技术,默认3DES;其他有NONE, DES, 3DES, RC4 和 BLOWFISH

[/I identityfile]:指定用户身份文件的位置。身份文件包含使用RSA身份验证连接到服务器所需的私钥。缺少此选项会导致使用密码验证。

[/L username]:用户名

[/P port]:端口,默认22

[/PASSWORD password]:密码

[/Z compressionlevel]:密码压缩级别,1-9

/SSH2 [ssh_options] hostname:以SSH2协议打开hostname连接。

[/AUTH method]:指定连接SSH2时的认证方法,多种方法用逗号隔开。语法:/AUTH password,publickey,keyboard-interactive,gssapi

[/LOCAL port:hostname:hostport]:将端口(本地主机)上的连接请求转发到主机名上的主机端口。

[/M MAC]:指定消息认证码

[/P port]:端口,默认22

[/PASSPHRASE passphrase]:登录到SSH2服务器上,使用PASSPRASH作为用/I选项给出的身份文件的密码。

[/PASSWORD password]:密码

[/REMOTE port:hostname:hostport]:将端口(本地主机)上的连接请求转发到主机名上的主机端口。请求SSH2服务器接受端口上的连接请求(在远程机器上)并将请求转发到主机名上的主机端口

[/Z compressionlevel]:密码压缩级别,1-9

/TELNET hostname [port]:开始SecureCRT并以Telnet协议打开hostname连接。

/RLOGIN hostname:以Rlogin协议打开hostname连接。

/TAPI phone number:开始SecureCRT并以TAPI协议打开会话连接。

/SERIAL port:以port打开默认会话。

Disconnect 断开会话;

crt.Session.Disconnect

Log 启用或禁用日志;

crt.Session.Log(start[,append,[raw]]) ‘参数均为bool变量,默认false

开始或停止记录取决于“start”参数的布尔状态。在开始日志记录时, “append”参数可以设置为true,打开日志文件时将以追加的方式记录(不删除指定的日志文件之前的内容); “raw” 参数设置为true,则将原始字符写入日志文件。append参数和raw参数是可选的,如果未指定,则为false(当“start”为false时,将忽略append和raw的值)。

2.3 Dialog,提供了输入框和 MessageBox

Prompt:提示用户输入

crt.Dialog.Prompt(message [, title [, default [, isPassword ]]])

pass = crt.Dialog.Prompt(“Enter your password:”, “Logon Script”, “”, True)

MessageBox:显示信息

crt.Dialog.MessageBox(message [, title [, buttons]]) 

‘button 参数选项

    Const ICON_STOP = 16 ‘显示错误/停止图标。

    Const ICON_QUESTION = 32 ‘显示“?图标

    Const ICON_WARN = 48 ‘显示“! 图标

    Const ICON_INFO=  ‘显示“info” 图标

    Const BUTTON_OK = 0 ‘‘显示OK按钮

    Const BUTTON_CANCEL = 1 ‘显示OK和取消按钮

    Const BUTTON_ABORTRETRYIGNORE = 2 ‘显示中止、重试和忽略按钮

    Const BUTTON_YESNOCANCEL = 3 ‘显示是、否和取消按钮

    Const BUTTON_YESNO = 4 ‘显示是、否按钮

    Const BUTTON_RETRYCANCEL = 5 ‘显示重试和取消按钮

    Const DEFBUTTON1 = 0 ‘第一个按钮是默认的

    Const DEFBUTTON2 = 256 ‘第二个按钮是默认的

    Const DEFBUTTON3 = 512 ‘第三个按钮是默认的

‘ MessageBox() 的返回值

    Const IDOK = 1 ‘ OK 按钮被点击

    Const IDCANCEL = 2 ‘取消 按钮被点击

    Const IDABORT = 3 ‘中止 按钮被点击

    Const IDRETRY = 4 ‘重试 按钮被点击

    Const IDIGNORE = 5 ‘忽略 按钮被点击

    Const IDYES = 6 ‘是 按钮被点击

    Const IDNO = 7 ‘否 按钮被点击

‘ 例子

    result = crt.Dialog.MessageBox("登录失败, 重试?", "错误", ICON_QUESTION Or BUTTON_YESNO Or DEFBUTTON2 )

If result = IDNO Then

      Exit Sub

End If

2.4 Window,窗口

属性

Activate:标识当前SecureCRT窗口是否激活,返回bool值

Caption:设置或返回SecureCRT窗口的标题

State:返回SecureCRT窗口的显示状态。

0 – hidden    隐藏

1 – visible (normal) 可见(普通)

2 – minimized  最小化

3 – maximized  最大化

操作

Activate:激活SecureCRT窗口,置于桌面最顶层

Show:各种状态显示SecureCRT窗口。

如果脚本不需要交互的话,可以设置 crt. Window.show 0,隐藏窗口执行,但是对于高版本的SecureCRT来说,每个crt.session连接的时候都会显示一下窗口,然后才能调用crt. Window.show 0来隐藏窗口,非常不爽

2.5 Arguments,参数

访问参数,参数通过/ARG命令行传递。’ CRT.exe /ARG myhostname /ARG zxiptv

属性

Count:传递给SecureCRT的参数个数。

crt.Arguments.Count

操作

GetArg:激活SecureCRT,置于桌面最顶层

crt.Arguments.GetArg(number) ‘number从0开始

crt.Arguments(number)

3. SecureCRT6.6新增对象

相比 5.1,crt 多了些对象属性:Arguments(命令行参数),Clipboard(剪贴板),FileTransfer,操作上则添加了 tab 操作(标签页属性)和加强了错误处理(处理脚本出错但继续执行的情况),GetScriptTab比较常用,用来获得执行脚本所在的 tab 对象。其下的二级对象也加了不少属性和操作。

object.Get2(row1, col1, row2, col2),和 Get 的参数一个样。看描述, Get 获取的的是矩形区域内的文本,空白也被包括,而 Get2 会根据换行 \\r\\n 来判断行文本是否已结束,换行也被包括

ReadString 非常有用,可用来获得命令的执行输出,惯用法:

1. char = crt.Screen.ReadString() // 无参式,从输出中一次取一个字符

2. str = crt.Screen.ReadString(StringToWaitFor, TimeOutSeconds) // 超时可省略

2. str = crt.Screen.ReadString([“home”, “work”], 10) // [stringarray],类似 WaitForStrings

4. SecureCRT应用程序运行选项

cmd = “SecureCRT.EXE /Script c:\est.vbs /arg 129.0.31.27 /arg zxiptv”

命令行运行选项参数:

* /ARG argumnet:SecureCRT运行参数

* /SCRIPT filename:SecureCRT运行脚本。

* /COLOR_SCHEME scheme:指定现有的配色方案:指定与终端窗口相关联的各种颜色的会话设置的组合,包括前景和背景。要用于会话,会话是一组被分配给远程机器的连接的选项。这些设置和选项保存在会话名称下,并允许用户对不同主机有不同的偏好。开始。当使用此开关时,会话颜色方案的任何更改将被忽略。如果指定了不存在的方案,则将使用会话配置颜色方案。

*/F folderpathname:指向另一配置文件夹位置。如果在备用文件夹中没有配置文件,SeCuReRT将创建一个。如果没有此选项,SeCuReRT将使用默认文件夹位置的配置信息。

*/FIREWALL:使用当前全局防火墙设置连接会话。替换/代理和/ SOCKS选项。

*/MAX_COLS n:SecureCRT最大列数,范围,132—1024

*/NOMENU:隐藏菜单栏

*/NOTOOLBAR:隐藏工具栏 

*/NOSAVE:设置不保存 

*/POS x y:SecureCRT窗口位置 

*/TITLEBAR “Title to display”: 将标题栏中的文本设置为以参数形式给出的字符串。

5. 举例

我们使用myscript.vbs脚本,在windows机器上先ssh到1.1.1.1,然后再从1.1.1.1 telnet到2.2.2.2,然后执行命令ifconfig。

windows下执行的命令为: 

    SecureCRT /SCRIPT myscript.vbs

myscript.vbs脚本内容为:

# $language = "VBScript"

# $interface = "1.0"

Sub Main

    crt.session.Connect("/ssh2 /L root /PASSWORD rootaaa 1.1.1.1")

    crt.screen.send "telnet 2.2.2.2" & Chr(13) 

    crt.screen.WaitForString "login:",10 

    crt.screen.send "root" & Chr(13) 

    crt.screen.WaitForString "Password:",10 

    crt.screen.send "rootbbb" & Chr(13) 

    crt.screen.WaitForString " $",10 

    crt.screen.send "ifconfig" & Chr(13) 

End Sub下载本文

显示全文
专题